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
ログ解析作業の効率化の参考になれば幸いです。
