『日付毎の集計と合計値の抽出』(MoonMan) 初めて質問させていただきます。 表題の質問ですが、CSVをADOでsheetに抽出後の展開で悩んでます。 本当は、CSVの抽出で一気にフィルタリングをかけて抽出したかたっのですが、 力不足で以下のような列で抽出しました。 A)ユーザ・日付・相手方(CD)・対応時間(秒) センター#1 200910121829 7051 55 このシートを B)集計日付・発信回数・発信通話時間 という表組みに集計しようとしています。 仕様としては、 1)日付は日次レベルでグループ化しする 2)開始日と終了日を別のシート(セル)から値を求める 2)日付毎で配列化し、その行数を求めて積算し、指定のセルに書き出す。 3)その配列の秒数を積算し、時間の単位で指定のセルに書き出す。 4)1時間に満たない場合は、00:NNとする。 5)データのない日付は、0で書き出す そこで、以下のコードを書き始めています。 - - - - Sub 仕訳集計() Dim ユーザ() As String Dim 日付() As String Dim 相手先() As String Dim 対応時間() As Integer Dim 集計日付() As String Dim 開始日(d, 1) 日付最終行 = Worksheet("sheet1").Cells(65536, 2).End(xlUp).Row ReDim 日付(日付最終行 + 1) ReDim 相手方(日付最終行 + 1) ReDim 対応時間(日付最終行 + 1) For i = 1 To 最終行 If Cells(i, 2).Value Then 日付(i) = Worksheet("sheet1").Cells(i, 2).Value Else 日付(i) = 日付(i - 1) End If 相手方(i) = Cells(i, 3).Value 秒数(i) = Cells(i, 4).Value Next 'ループした配列をグループ化して加工する 集計日 = Worksheet("集計結果").Range(A1).Cells(2.1) 発信回数 = Worksheet("集計結果").Range(A1).Cells(2.2) 発信通話時間 = Worksheet("集計結果").Range(A1).Cells(2.3) 着信回数 = Worksheet("集計結果").Range(A1).Cells(2.4) 着信時間 = Worksheet("集計結果").Range(A1).Cells(2.5) 開始月 = Worksheet("メイン画面").Cells(L15) '開始日 = Worksheet("メイン画面").Cells(Q15) 固定化するほうがよい 終了月 = Worksheet("メイン画面").Cells(X15) 終了日 = Worksheet("メイン画面").Cells(AC15) d = 1 For d = 1 To 終了日 If 日付(i) = d Then 'グループ化してカウント '行数の値を書き出し '秒数を時間に変換積算して書き出し 'オフセットして書き出し 'ループする End If Next とここまでは、考えましたが、煮詰まってしまいました。 どなたかすっきりした考え方をご教示ください。 Excel2003で作成しています。 ---- 回答が無いようなので軽くコメントを……   まず、仕様を見る限り集計部分はCOUNTIFやSUMIFなどの数式だけで出来そうな気がしますけども、 あくまでもマクロで処理しないと駄目なんですかね。   開始、終了の日付範囲が数式だけだと難しいかもしれないから、 そこはマクロで組むにしても、 集計だとかは表計算ソフトであるExcelさんの得意分野だと思うので、 マクロでわざわざ組むのが面倒というか勿体無いと言うか…… (ご近所PG)