このページの本文へ

前へ 1 2 3 4 5 6 7 次へ

USB接続のガイガーカウンターキットで遊ぶ

ひゃくまんえ~ん“放射線”ハンタ~! 漏らしてる子はいねぇがぁ~?

2007年08月30日 20時34分更新

文● 藤山哲人

  • この記事をはてなブックマークに追加
  • 本文印刷

【付録2】VBAでCSVデータを時間単位でまとめる


 以下のサンプルプログラムをExcelのマクロにコピー&ペーストして実行すると、Excelに直接読み込めない巨大なCSVデータを分、時、日、月ごとにまとめ、Excelシートに書き込めるようになる。

 なお、ソースでは、ログのCSVデータを『放射線log.csv』というファイル名で保存し、Cドライブのルートに置いたものとして書いている。集計の単位の変更方法や、平均を求めた際の有効桁数を変更したい場合の改変方法などは、ソースのコメント部分に書いておいた。動作チェックは、Excel 2003とWindows Vista Home Premiumで行なった。それ以外の環境でも正しく動作するとは思うが、保証はできない。


' ストロベリー・リナックス製 USBガイガーカウンターのCSVデータを
' 分、時、日、月ごとにまとめ、Excelシートに書き込むマクロ
'
' Copyright (C) 2007 Fujiyama Tetsuhito Mailto:tetsu-f@techdoc.jp
'                    ASCII Corporation. Web ASCII Editinal Team
'
Sub 放射線測定1分単位にまとめる()
Dim Y As Long           ' 値を書き込むセルの行
Dim Buf As String       ' CSVデータ1行分の文字列
Dim Prm() As String     ' CSVデータ分解用 0:日時 1:値
Dim FastLine As Integer ' CSV第1行目のフラグ
Dim Ntime As String     ' 現在注目中の日時
Dim Btime As String     ' 直前の日時
Dim TotalValue As Long  ' 注目中の日時の累計値
Dim Count As Long       ' 注目中の日時のデータ数
FastLine = 1
Y = 1
' A,B列の表示形式を設定 A:文字列 B:少数点以下第2位まで有効
' 0.000_ とすれば、第3位まで有効となる。
Columns("A:A").NumberFormatLocal = "@"
Columns("B:B").NumberFormatLocal = "0.00_ "
' 保存したCSVファイルのファイル名をフルパスで指定する
Open "C:\放射線Log.csv" For Input As #1
Do While (Not EOF(1))
Line Input #1, Buf
' 保存されたCSVは、文字列が""で括られていないので
' 単純にカンマでパラメータを分解
Prm() = Split(Buf, ",", 2, vbTextCompare)
' 分ごとにまとめる場合は ,16
' 時ごとにまとめる場合は ,13
' 日ごとにまとめる場合は ,10
' 月ごとにまとめる場合は ,7 を指定する
'
' ここでは分ごとにまとめている
Ntime = Left(Prm(0), 16)
If (Ntime <> Btime) And (FastLine = 0) Then
' 注目する日時に変更があった場合
' アクティブシートに日時と平均値を書き込む
Cells(Y, 1).Value = Btime
Cells(Y, 2).Value = TotalValue / Count
' 注目する日時の変更と累計値のクリア
' 書き込むセルの行を1増やす
Btime = Ntime
TotalValue = 0
Count = 0
Y = Y + 1
End If
' 注目している日時内であった場合は累計
Count = Count + 1
TotalValue = TotalValue + CLng(Prm(1))
' CSV第1行フラグをクリア
' 注目中の日時を強制的に第1行の日時とする
If FastLine = 1 Then
Btime = Ntime
FastLine = 0
End If
Loop
' 累計中だった値を書き出す
If Count <> 0 Then
Cells(Y, 1).Value = Ntime
Cells(Y, 2).Value = TotalValue / Count
End If
Close #1
End Sub

前へ 1 2 3 4 5 6 7 次へ

カテゴリートップへ

アスキー・ビジネスセレクション

ASCII.jp ビジネスヘッドライン

ピックアップ