Excel VBAでCSVログ解析ツールを作ったので公開します

導入文

CSV形式のログ解析は、検証やデバッグの現場で頻繁に発生します。

例えば次のような作業です。

  • 大量のCSVログから必要な信号だけ取り出す
  • 単位変換をかける
  • 特定条件のデータのみ抽出する
  • グラフで挙動を確認する

Excelで手作業でもできますが、

  • 手順が煩雑になる
  • 作業時間が長い
  • 再現性が低い

といった問題が発生しがちです。

そこで今回、
CSVログ解析を自動化するExcel VBAツールを作成しました。

このツールは

  • 信号抽出
  • 単位変換
  • 条件フィルタ
  • グラフ可視化

設定シートだけで再利用できる形で実装しています。

ツールはGitHubで公開しています。

GitHub
https://github.com/itubo224-gif/csv-log-extractor-vba

この記事では、このツールの概要と設計について紹介します。

ツールの実行結果(例)


1. ツール概要

今回作成したツールは、
CSV形式のログデータをExcel上で解析するためのVBAツールです。

主な目的は、検証ログやセンサログの解析作業を効率化することです。

このツールでは、設定シートを変更するだけで以下の処理を自動化できます。

  • 必要な信号の抽出
  • 単位変換の適用
  • 条件付きデータ抽出
  • Excelグラフによる可視化

Excel上で動作するため、特別な環境構築は不要で、
ログ解析の補助ツールとしてすぐに利用できます。


2. 想定ログ形式

本ツールは、次のような 横持ち形式(wide format)のCSVログを想定しています。

Time,SigA,SigB,SigC
0,1,-1,0.5
0.01,2,-2,0.6
0.02,3,-3,0.7
...

特徴は以下の通りです。

  • 列:信号
  • 行:時刻データ

この形式は、制御系ログやセンサログなどでよく使用される形式です。

ツールでは

  • CSVヘッダから信号名を検出
  • 指定した信号のみ抽出

という処理を行います。


3. 主な機能

本ツールの主な機能を紹介します。

CSVログ一括処理

指定フォルダ内のCSVログをまとめて読み込みます。
複数ログの処理にも対応しています。


信号抽出

必要な信号のみ抽出できます。

設定シートに信号名を入力するだけで、
CSVヘッダから該当列を自動検出します。


単位変換

信号ごとに次の変換式を適用できます。

y = k × x + b

distance = raw_value × 0.1 + 0

時刻範囲抽出

指定した時刻範囲のデータのみ抽出できます。

例えば

10秒〜20秒のデータのみ抽出

といった解析が可能です。


条件行フィルタ

特定信号の条件を満たす行のみ抽出できます。

SigC == 1 ± 0.01

の範囲のみ抽出することができます。


グラフ可視化

抽出した信号をExcelグラフとして表示できます。

対応グラフ

TIME-YグラフとXYグラフの2種類の可視化に対応しています。

  • TIME-Yグラフ
  • XYグラフ

4. 使い方

基本的な使い方は次の通りです。

① Excelツールを開く

tool/csv_log_extractor_vba_v0.1.xlsm

② 設定シートを開く

ログフォルダや信号名などを設定します。


③ 必要な項目を設定

主に次の項目を設定します。

  • 入出力フォルダ
  • 抽出信号
  • 単位変換
  • 時刻範囲抽出
  • 行フィルタ
  • グラフ設定

④ 実行ボタンを押す

CSVログが読み込まれ、
抽出結果がExcelに出力されます。


5. 実装のポイント

今回のツールでは、次の点を意識して設計しました。

設定駆動型のツール設計

ツールの再利用性を高めるため、
設定シートのみ変更すれば解析条件を変更できる設計にしました。

これにより、

  • 毎回コードを書き換える必要がない
  • 作業の再現性が高い

というメリットがあります。


ヘッダベースの信号検出

CSVログのヘッダから信号名を検出する方式にしています。

そのため

列番号ではなく信号名で指定

できるようになっています。

ログフォーマットが多少変わっても、
設定を変更するだけで対応できます。


許容誤差付き比較

ログ解析では

完全一致

ではなく

誤差範囲内の一致

が必要になることがあります。

そこで

|x - y| ≤ tol

という比較方式を実装しています。


6. まとめ

今回は、CSVログ解析を自動化する
Excel VBAツールを作成しました。

このツールを使うことで

  • 信号抽出
  • 条件付きデータ抽出
  • グラフ可視化

といった作業を、
Excel上で簡単に実行できるようになります。


追記(2026/03/31)

本ツールについて、その後Pythonを用いた検証基盤を構築し、全機能に対する網羅的な動作検証を実施しました。 検証の過程でいくつかの不具合や仕様の曖昧さが見つかり、それらを修正・整理したことで、ツールの信頼性をさらに向上させています。 詳細な検証内容や設計については、以下の記事で解説しています。

VBAツールの品質を担保するためにPythonで検証基盤を作った話 - AI Fusion Design

現在のGitHub版は、これらの修正を反映した最新版となっています。


7. 今後の展望

今後は以下のような機能追加を検討しています。

  • CSV区切り文字の自動判定
  • より柔軟な変換式対応
  • GUIの改善

ログ解析作業をより効率化できるツールにしていきたいと考えています。

もし改善案や要望などありましたら、
GitHubのIssueやコメントで教えていただけると嬉しいです。


ツールはGitHubで公開しています。

https://github.com/itubo224-gif/csv-log-extractor-vba

ログ解析作業の効率化の参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です