
日付時分秒単位,対象サーバ、種類、値の4項目で作成された
1か月分のcsvファイル(yyyymmdd_対象サーバ名_種類.csv)を
VBAで1件づつ読み込み、日付単位で最大値、平均値を求めた結果を
エクセルシートに出力するVBAのサンプルコードを教えてください。
※csvファイルは日付時間でソート済み
※エクセルシートに出力されるのは1ファイルで1か月分に集計された結果のみで
レイアウトは日付、対象サーバ、種類、最大値、平均値
お手数ですが、サンプルコードがあるURLだけでもよいのでよろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちわ
このコードは、一つのcsvファイルを読み込んで処理する物です。
Option Explicit
Dim FullFilePass As String
Dim dMaxArr() As Double, dTotalArr() As Double
Dim iCountArr() As Long
Dim iRow As Long
Dim myDic As Object
Sub CallSubCsvLineInput()
Dim i As Long, j As Long
Dim outArea, myDicKeys
Dim TempArr
iRow = -1
Set myDic = CreateObject("Scripting.Dictionary")
FullFilePass = "D:\AAA\BBB\yyyymmdd_対象サーバ名_種類_01.csv"
'Pass は、実際の物にする
Call CsvLineInput
' FullFilePass = "D:\AAA\BBB\yyyymmdd_対象サーバ名_種類_02.csv"
' 'Pass は、実際の物にする
' Call CsvLineInput
myDicKeys = myDic.keys
ReDim outArea(UBound(dMaxArr), 4)
For i = 0 To UBound(dMaxArr)
TempArr = Split(myDicKeys(i), "■")
outArea(i, 0) = TempArr(0)
outArea(i, 1) = TempArr(1)
outArea(i, 2) = TempArr(2)
outArea(i, 3) = dMaxArr(i)
outArea(i, 4) = dTotalArr(i) / iCountArr(i)
Next i
TempArr = Split("日付、対象サーバ、種類、最大値、平均値", "、")
'シート名は、実際の物にする
Sheets("Sheet1").Cells(1, "A").Resize(1, 5).Value = TempArr
Sheets("Sheet1").Cells(2, "A").Resize(UBound(dMaxArr) + 1, 5).Value = outArea
Set myDic = Nothing
Erase dMaxArr, dTotalArr, iCountArr
End Sub
Private Sub CsvLineInput()
Dim intFF As Long
Dim strTemp As String
Dim TempArr
Dim DblTemp As Double
Dim DicKey As String
Dim i As Long, j As Long
intFF = FreeFile
Open FullFilePass For Input As #intFF
'Line Input #intFF, strTemp '必用があれば一行目を読み飛ばす
Do While Not EOF(intFF)
Line Input #intFF, strTemp
TempArr = Split(strTemp, ",")
'Split(TempArr(0), " ")(0)・・・日付時分秒から、日付け部分だけを取り出す。
'実物のデータを見ないとこれで良いかは不明
DicKey = Split(TempArr(0), " ")(0) & "■" & TempArr(1) & "■" & TempArr(2)
DblTemp = CDbl(TempArr(3))
If Not myDic.exists(DicKey) Then
iRow = iRow + 1
myDic(DicKey) = iRow
ReDim Preserve dMaxArr(iRow)
ReDim Preserve dTotalArr(iRow)
ReDim Preserve iCountArr(iRow)
dMaxArr(iRow) = DblTemp
dTotalArr(iRow) = DblTemp
iCountArr(iRow) = 1
Else
i = myDic(DicKey)
If dMaxArr(i) < DblTemp Then dMaxArr(i) = DblTemp
dTotalArr(i) = dTotalArr(i) + DblTemp
iCountArr(i) = iCountArr(i) + 1
End If
Loop
Close #intFF
End Sub
フォルダの全部のcsvファイルを処理するとか、
ダイアログを開いて、csvファイルを選択するとかの変更を
望む場合、新しく質問を建ててください。
No.1
- 回答日時:
>※エクセルシートに出力されるのは1ファイルで1か月分に集計された結果のみで
>レイアウトは日付、対象サーバ、種類、最大値、平均値
無理せずに、csvファイルのデータをエクセルに取り込むVBA
と
集計結果を表示するピボットテーブルに分けて考えてみては如何でしょうか。
参考までに
CSVファイルをエクセルに取り込むコード
https://www.moug.net/tech/exvba/0060086.html
同じフォルダーに複数のCSVファイルなら
Dir()関数で検索してみて下さい。
ピボットテーブル、グループ化 で検索すると
最大値、平均値
がご希望のグループごとに集計してくれます。
ご回答ありがとうございます。
csvデータの取り込みは頂いたURLで実現出来そうですが、
最大値、平均値は全件をエクセルに取り込まず(容量が大きくなる為)に
内部で処理した結果をエクセルに取り込みたいため
ピポットやグループ化は考えおりません。
ですので、引き続き内部ロジックで平均値や最大値を求める
vbaのサンプルコードがあればよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
wshでcsvファイルのソートを行...
-
複数のcsvファイルをマクロ(VBA...
-
Excel VBA ADOでのCSV取込みに...
-
エクセル形式のファイルの読み込み
-
バッチでCSVを処理する時、空の...
-
ACCESS CSVファイルをインポ...
-
【エクセルVBA】お願いします。...
-
【C#】パス名で無効な文字
-
csvファイルを列数ごとに分割す...
-
cvs?って何?
-
CSV出力して、MS/EXCELで開くと...
-
OpenOfficeBasicで漢字が表示で...
-
COBOL85でのCSVファ...
-
COBOLでCSVをインプットにして...
-
Javaのコード
-
【ExcelVBA】UTF-8の文字コード...
-
エクセルのプロパティーでセキ...
-
エクセルvbaでdocuworksprinter...
-
Wordで差込印刷した後に別々の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
バッチでCSVを処理する時、空の...
-
マクロから出力されるcsvのダブ...
-
csvファイルでの日付設定「yyyy...
-
csvファイル 項目数取得
-
CSV形式での保存時に”文字列...
-
【C#】パス名で無効な文字
-
複数のcsvファイルをExcelに一...
-
VBAでcsvファイルを読み込んで...
-
csvファイルを列数ごとに分割す...
-
【ExcelVBA】UTF-8の文字コード...
-
CSVファイルの項目行を削除...
-
エクセル形式のファイルの読み込み
-
【エクセル マクロ】読み込ん...
-
VBScriptからEXCELのVBAコマン...
-
エクセルVBA 大容量CSVファイル...
-
csvファイルのデータの一部を取...
-
巨大なCSVの加工(指定列のみの...
-
VBA 毎日取得するデータを反映...
-
COBOLでCSVをインプットにして...
おすすめ情報