
CSVファイルで100個のファイル数(各ファイル3列×50000行)を1つのexcelシートに結合させる方法を探しています。
結合させる際に各データを横に結合させ、最終的に各行の平均を算出させたいです。
データ数が多いため、これまでコピー→貼り付けを1つずつし、各行をexcel関数で平均算出をさせていたのですが、時間がかかってしまうのでプログラム等で出来ないかと思っています。
横に結合(貼り付け)作業だけでもVBAなどで出来るという話を聞いたのですが、イマイチわからないので教えて頂けたら幸いです。
A 回答 (4件)
- 最新から表示
- 回答順に表示

No.4
- 回答日時:
以前の質問ですと
https://oshiete.goo.ne.jp/qa/9443836.html
>ちなみに一つのファイルには3列、50000行のデータ量でこのファイルが100個以上ある現状です。
>質問者からの補足コメント
>うーん・・・
>各列ごとの平均を求めたいです。
>連結させる方法だと下にそのまま結合されてしまったので、イメージ的には横にそのまま貼り付けていけると助かります。
となっていて、各列の平均を求めたいとありますが、この件とは別件なのでしょうか?
今回の質問で、求めたいのは、各行の平均で間違いないですか?


No.3
- 回答日時:
VBAで作ってみました。
データを結合した後、最終列に平均値を求めるところまで処理します。
前提として、CSVファイルの拡張子は「csv」、区切り文字は「,」としています。
このプログラムでは実行速度を上げるために、1ファイルのデータ全てを配列に格納してからシートに書き出しています。もしかしたら環境によってはこの部分でメモリ不足が発生するかもしれません。
その場合は、ファイル単位ではなく行ごとに処理することで回避できますが、実行は大幅に遅くなると思います。性能が問題になる場合は、VBA以外の方法を検討した方がよいと思います。
準備:
(1)新規のExcelブックを開き、Alt+F11でVBEを起動する。
(2)VBEのメニューから[ツール]-[環境設定]を選択し、「Microsoft Scripting Runtime」のチェックを入れて[OK]ボタンを押す。
(3)標準モジュールに下記のコードを貼り付ける。
(4)Excelブックを保存する。
実行方法:
(1)準備の手順で保存したExcelブックを開く。
(2)CSVファイル100個をC:\temp\csvフォルダに配置する。
または、コード内のCSV_DIR_PATHの値を、実際にCSVファイルを格納しているフォルダの絶対パスに書き換える。
(3)Alt+F8で[マクロ]ダイアログを起動するなどの方法で、下記コードのマクロを実行する。
Sub CSVファイルの結合と平均算出()
Const COL_NUM As Long = 3 ' CSVデータの列数
Const ROW_NUM As Long = 50000 ' CSVデータの行数
Const CSV_DIR_PATH As String = "C:\temp\csv" ' CSVファイルの配置先フォルダ
Dim fso As FileSystemObject
Dim myFiles As Files
Dim myFile As File
Dim myStream As TextStream
Dim myLine As String
Dim data() As String
Dim fileCount As Long
Dim lineCount As Long
Dim buf(ROW_NUM - 1, COL_NUM - 1) As Double
Set fso = New FileSystemObject
Set myFiles = fso.GetFolder(CSV_DIR_PATH).Files
' 新しいブックを開く
Workbooks.Add
' CSVデータを読み込んでシートに貼り付ける
fileCount = 0
For Each myFile In myFiles
If myFile Like "*.csv" Then
fileCount = fileCount + 1
Cells(1, COL_NUM * (fileCount - 1) + 1).Value = fso.GetFileName(myFile)
Set myStream = fso.OpenTextFile(myFile, ForReading)
lineCount = 0
Do Until myStream.AtEndOfStream
myLine = myStream.ReadLine
lineCount = lineCount + 1
data = Split(myLine, ",")
Dim i As Long
For i = 0 To COL_NUM - 1
buf(lineCount - 1, i) = CDbl(data(i))
Next
Loop
myStream.Close
Set myStream = Nothing
Range(Cells(2, COL_NUM * (fileCount - 1) + 1), Cells(ROW_NUM + 1, COL_NUM * fileCount)) = buf
Application.StatusBar = fileCount & "個目完了"
DoEvents
End If
Next
Set myFiles = Nothing
Set fso = Nothing
' 最終列に平均値を入力する
Application.StatusBar = "平均を計算します"
Dim averageRow As Long
Dim averageAddress As String
averageRow = COL_NUM * fileCount + 1
averageAddress = Range(Cells(2, 1), Cells(2, averageRow - 1)).Address(RowAbsolute:=False)
Cells(1, COL_NUM * fileCount + 1).Value = "average"
With Cells(2, averageRow)
.Value = "=AVERAGE(" & averageAddress & ")"
.AutoFill Destination:=Range(Cells(2, averageRow), Cells(ROW_NUM + 1, averageRow))
End With
Application.StatusBar = False
End Sub

No.2
- 回答日時:
perlかrubyでならその処理を行うスクリプトを提示することは可能です。
但し、あなたのパソコンにperl又はrubyがインストールされていないなら、それをインストール
する必要があります。
もし、希望するなら、その旨、補足ください。
その場合、言語(perlかruby)、言語のバージョンも明記ください。
尚、以下の仕様で作成しますが、問題ないですか?
1.対象となるファイルは、拡張子が.CSVとする。かつ、それらのファイルは1つのフォルダ内に
全件ファイル格納されている。
2.横に並べる順番は、ファイル名順(アルファベット順、大文字、小文字区別有)とする。
3.出力ファイルは、OUT.TXTとする。(OUT.CSVとすると2回目にこのファイルを処理してしまう為)
excelに読み込む場合は、リネームが必要。
No.1
- 回答日時:
自分ならバッチファイルで結合する。
forコマンドに/fオプションを付けて1行ずつ読み込み、それを結合したいファイルの1行ずつ読み込んだテキストにカンマを付けて新たに「結合したファイル」を出力する。
それを最終行まで行い、さらに次のファイルを「結合したファイル」に結合…を繰り返す。
CSVファイル中に空白文字が含まれていなければ処理は簡単です。
空白文字が含まれる場合はforコマンドにデリミタを設定して1行全部読み込めるようにします。
・・・
と、VBAではないので実際のバッチファイルは示さずに回答してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Excel(エクセル) Excel同士のデータの突合 3 2023/08/07 16:34
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- 統計学 お世話になっています. x軸は時間(期間)y軸はある値に対する2つのグラフ比較をしますが、私個人の考 2 2023/03/30 11:42
- Excel(エクセル) Excel使用前提 同じフォルダ内にあるファイルの集約等をマクロでできますか 4 2022/09/06 19:03
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトで作成日時...
-
公文書のxmlファイルの開き方が...
-
アクセス 壊れた? 「ファイ...
-
.NETアプリを作ったときの .man...
-
#include <Windows.h>というヘ...
-
リンクの張り付けかたを教えて...
-
binファイルを解凍したいの...
-
iPhoneでXMLファイルを開くには...
-
VBAのバイナリ出力について
-
ファイルが開かれているかどう...
-
Latexで図番号だけを「図1.1」...
-
ゲームの中身を見てみたい
-
VB.netで DirListBoxを使いたい
-
jarファイル
-
exeファイルの中身を見る方法は...
-
自分で作成した重要ファイルを...
-
CRCが一致する確率
-
CSSファイルの日本語コメントが...
-
VBSが起動しない
-
コマンドプロンプトで、指定し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Latexで図番号だけを「図1.1」...
-
コマンドプロンプトで作成日時...
-
binファイルを解凍したいの...
-
リンクの張り付けかたを教えて...
-
アクセス 壊れた? 「ファイ...
-
公文書のxmlファイルの開き方が...
-
#include <Windows.h>というヘ...
-
.NETアプリを作ったときの .man...
-
Seasar2のdiconファイルの読み方
-
bibtexで参考文献作成できない
-
jarファイル
-
CRCが一致する確率
-
VBAでのicsファイル変換
-
C#でログファイルにファイルパ...
-
C言語---ファイルに出力したデ...
-
コマンドプロンプトで、指定し...
-
既に開いているエクセルを閉じ...
-
VBAのバイナリ出力について
-
自分で作成した重要ファイルを...
-
CSSファイルの日本語コメントが...
おすすめ情報