プロが教えるわが家の防犯対策術!

VBAでの処理についてご教授願います。

○ブックの種類
1.元ブック…名称例:サンプリング_20211201.csv(数字部分には日付が入ります)
2.集計用ブック

○元ブックの内容
A10~A8649に必要なデータが入っている

○求めたい処理結果
1.元ブック1のA10~A369の平均を集計用ブックsheet1のA1に計算する。
元ブック1のA370~A729の平均を集計用ブックsheet1のA2に計算する。
以下を繰り返し、360個毎の平均を計算する

2.元ブック2のA10~A369の平均を集計用ブックsheet2のA1に計算する。
元ブック2のA370~A729の平均を集計用ブックsheet2のA2に計算する。
以下を繰り返し、360個毎の平均を計算する

3.上記の処理を元ブック全てに行う。
最終的に縦は24個、横は元ブック数の数値が入った集計用ブックが完成する。
元ブックは全て同じフォルダに入っている。
元ブックの数は都度異なる。

拙い説明となっておりますので、不明点はご質問いただければと思います。
よろしくお願いします。

A 回答 (5件)

No3です



No3のうち3の部分が少々わかりにくいかと思い、ごく簡単なサンプルを作成してみました。
指定したフォルダから「サンプリング_数字8桁.csv」に合致するファイル名をActiveSheetに書き出す例です。
実際には、書き出す代わりに、そのファイルに対してなさりたい処理を行えばよいことはお分かりになると思います。

Sub sample()
Dim reg
Dim c, file
Const folderPath = "C:\Users\hogehoge\temp" ' ←指定フォルダ

Set reg = CreateObject("VBScript.RegExp")
reg.Pattern = "^サンプリング_\d{8}\.csv$"
Set c = Range("A1")

file = Dir(folderPath & "\*.csv")
While file <> ""
 If reg.test(file) Then
  c.Value = file
  Set c = c.Offset(1)
 End If
 file = Dir()
Wend
End Sub
    • good
    • 0

No.2です。



#3様のアドバイスにはいつも丁寧かつ的確だなと感じて参考にさせて頂く事があります。

ところで今回の元データってやっぱ日付順になるのでしょうか?
名称はあくまで例となってますが、"_"以降が重要なのかな。
あと#3様の回答にもありますが、本来は集計Sheet1に列を変えて書き込むとかですかね?

Excel VBAでAVERAGE関数を使って平均値を求める
https://lilia-study.com/excel/excel-vba/workshee …

Offsetプロパティでセル範囲を取得したい?
https://www.relief.jp/docs/excel-vba-cells-area- …

同じセル範囲をずらしていくならまずは最初のセル範囲をセットし平均値を求める式に当てはめ、Offsetにより範囲を移動させるとか?
    • good
    • 0

こんにちは



>最終的に縦は24個、横は元ブック数の数値が入った集計用ブックが完成する。
説明の1.2.を読む限りでは、縦1列のシートしか作成されないように読めますけれど?
まぁ、内容は質問者様がきちんとわかっていれば良いことですけれど・・

何を知りたいのかが記されていませんけれど、手順として、まず
1.「一つのブックの集計を転記するプロシージャ」を作成してみましょう。
これができれば、7割方はできたようなものと思います。
次に、
2.上記のブックや書き出し先を変数にして可変にしておきます。

一方で、
>元ブックは全て同じフォルダに入っている。
>元ブックの数は都度異なる。
とのことですので、
3.「フォルダ内の(対象となる)ブックを順に探す」プロシージャを作成します。

上記ができれば、3.と2.を組み合わせれば完成できると思います。
VBAに関する情報はネットに溢れていますので、うまく検索しさえすれば、たいての情報は得ることができます。
コツとしては「漠としたやりたいこと」ではなく、処理を分割して具体化し、「単純なキーワードにして」検索することでしょうか。
作る際のコツとしても、「一気に全部」を作成するのではなく、処理をいくつかの部分に分けて、それぞれを一旦作成して想定通りに処理できることを確認したうえで、組み合わせて全体を作成するようにすれば、「作っては見たもののうまく動かず、どこが悪いのかわからない」なんてこともなくなると思います。

調べてもわからないことなどがあれば、その点について具体的に質問をなされば、適切な回答を得やすいものと思います。
    • good
    • 1

csvはExcelブックではなく一種のテキストファイル。


なのでA10とかのセル座標は存在しないかと。
取り敢えず10行目からが該当しそうに感じますが、9行目まではどうなっているのか?でしょうかね。
    • good
    • 0

?何が知りたいの?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!