[[20200520170744]] 『集計結果の表を加工』(まりん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『集計結果の表を加工』(まりん)

ExcelのVBAにて質問させて下さい。

A列には日付(B列には書式が"yyyy/m/d h:ss"が入っており、そこから日付を取り出しています)
B列には集計の開始時間
C列には集計の終了時間
D列、E列には集計した結果が入っています。

日付が異なるデータを一括で集計している為、同じ列に異なる日付の集計結果が入っています。
A列  B列      C列      D列    E列
日付 集計の開始時間 集計の終了時間 集計結果1  集計結果2



やりたいこと↓
集計結果を日付ごとに表示させたいです。
A列〜C列省略     
D列         E列        F列        G列 ・・・
集計結果1(5/1) 集計結果2(5/1) 集計結果1(5/2) 集計結果2(5/2) ・・・ 

1日だけの集計であれば何も処理はせず、複数の場合はそれぞれをF列G列/H列I列・・・の様に列を追加させるにはどのような処理を書けばいいでしょうか?
拙い説明で申し訳ございませんが、よろしくお願いいたします。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


訂正
yyyy/m/d h:ss ではなく、yyyy/m/d h:mmでした。
失礼いたしました。
(まりん) 2020/05/20(水) 17:43

SUMIF関数で集計できませんか。

(マナ) 2020/05/20(水) 18:06


 Sub main()
    'Sheet1をSheet2に集計
    Dim sh1 As Worksheet, sh2 As Worksheet, i As Long, r As Range
    Set sh1 = Sheets("Sheet1")
    Set sh2 = Sheets("Sheet2")
    sh1.Cells.Copy sh2.Range("A1")
    If WorksheetFunction.CountA(sh1.Range("A:A")) - 1 = WorksheetFunction.CountIf(sh1.Range("A:A"), sh1.Range("A2")) Then Exit Sub
    i = 2
    Do While sh2.Range("A" & i).Value <> ""
        Set r = sh2.Rows(1).Find("集計結果1(" & sh2.Range("A" & i).Text & ")", , , xlWhole)
        If r Is Nothing Then
            Set r = sh2.Cells(1, Columns.Count).End(xlToLeft).Offset(, 1)
            r.Resize(, 2).Value = Array("集計結果1(" & sh2.Range("A" & i).Text & ")", "集計結果2(" & sh2.Range("A" & i).Text & ")")
        End If
            sh2.Cells(i, r.Column).Resize(, 2).Value = sh2.Range("D" & i & ":E" & i).Value
        i = i + 1
    Loop
    sh2.Range("D:E").Delete
End Sub
(mm) 2020/05/21(木) 10:26

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.