「csv形式で取得した大量の実験データを分析したい。」
この記事ではこんな状況で役に立つ、
【複数のcsvファイルを開いているエクセルシートに一括読み込みする】
サンプルコードをご紹介していきます。
あなたの状況に応じて修正すればどんな状況にも対応できるはずです。
それでは早速やっていきましょう!
紹介するスキルの概要説明
まずはじめに今回の記事で紹介する内容を簡単にご説明しておきます。
今回は以下の画像のように、A2セルからA4セルに記入された3つのcsvファイルを9行目以降に順番に読み込んでいくという作業を行ってみます。
今回読み込むcsvファイルは以下のように2列の単純な時系列データです。
また読み込むcsvファイルは以下のように、VBAを実行するファイルと同じフォルダに格納されている状況を想定してコードを書いています。
状況説明はこのくらいにして、さっそくVBAコードを記述していきます。
複数のcsvファイルを一括読み込みするVBAコード
Sub open_csv()
'変数の型を宣言
Dim base_file As String
Dim file_name As String
Dim end_row As Integer
Dim i As Integer
'このファイルを記憶させる
base_file = ThisWorkbook.Name
'開きたいファイル名を指定
i = 0
Do Until Cells(2 + i, 1) = ""
'これから開くファイルを記憶させる
file_name = Cells(2 + i, 1)
'指定したファイルを開く(ファイルがなかったら処理をとめる)
If Dir(ThisWorkbook.Path & "\" & file_name) <> "" Then
Workbooks.Open (ThisWorkbook.Path & "\" & file_name)
Else
MsgBox "指定ファイルがありません。"
Exit Sub
End If
'開いたファイルからデータをコピー
end_row = Range("A1").End(xlDown).Row
Range(Cells(1, 1), Cells(end_row, 2)).Copy
'ベースファイルに張り付ける
Windows(base_file).Activate
Cells(9, 3 * i + 1).Select
ActiveSheet.Paste
'指定したcsvファイルを閉じる
Application.CutCopyMode = False
Windows(file_name).Close
i = i + 1
Loop
End Sub
基本的には
①エクセルファイルに記述してあるファイル名のcsvファイルを開く
②データの一番下の行までをコピーする(今回A列とB列をコピー)
③もともとのファイルに戻る
④コピーしたcsvファイルのデータを張り付ける
という作業を3回繰り返しているだけです。
※ひとつひとつの作業にコメントをつけておりますので、どこでどんな作業を行っているかは理解できるはずです。あなたの状況に応じて、適宜修正してご活用ください。
◆合わせて読みたい
csvファイルの読み込み方法についてもう少し詳しく知りたい、という方は以下の記事が参考になるはずです。
【VBA】指定したcsvファイルを開く方法!閉じるところまで一括解説!
サンプルコードの実行結果
最後に先ほど紹介したコードを実行してみましょう。
この状態から・・・
「実行!!!」
結果は以下のようになりました。
しっかりと狙いの場所にデータが読み込まれていますね。
おわりに
というわけで今回は複数のcsvファイルを一括読み込みするサンプルコードをご紹介しました。
大量の実験データのまとめ、分析の際にぜひご活用ください。
このように私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
・日々の残業時間を減らしたい。
・業務をもっと効率的にこなしたい。
・もっと勉強する時間を作りたい。
こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。
この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント