| 
    
     |  | IROC さん、初心者です。さん、こんばんは。 >VBA を使わなくても 数式で、できそうに思えますが・・
 そうですね!!
 でも、VBAで作ってみました。
 と言ってもマクロの記録と数式をVBA化しただけですが・・。
 '===============================================================
 Sub main()
 Dim rng1 As Range
 Dim rng2 As Range
 Dim mindate
 Dim maxdate
 With Worksheets("sheet1")
 Set rng1 = .Range("a1", .Cells(.Rows.Count, 1).End(xlUp))
 End With
 '↑Sheet1のA列の入力範囲を取得
 With WorksheetFunction
 mindate = .Min(rng1)
 maxdate = .Max(rng1)
 End With
 '↑日付の最初と最後を取得
 With Worksheets("sheet2").Cells(1, 1)
 .Value = mindate
 .DataSeries Rowcol:=xlColumns, Type:=xlChronological, Date:= _
 xlDay, Step:=1, Stop:=maxdate, Trend:=False
 End With
 '↑Sheet2のA列に最初から最後の日付を設定
 With Worksheets("SHEET2")
 Set rng2 = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
 '↑Sheet2のA列の入力範囲を取得
 With rng2
 .NumberFormat = "m""月""d""日"""
 .Offset(0, 1).Cells(1).FormulaArray = "=IF(COUNTIF(" & _
 rng1.Address(, , , True) & ",a1)>0,AVERAGE(IF(" & _
 rng1.Address(, , , True) & "=a1," & rng1.Offset(0, 1).Address(, , , True) & ")),0)"
 '↑Sheet2のB1に配列数式設定
 .Offset(0, 1).DataSeries Rowcol:=xlColumns, Type:=xlAutoFill, Date:=xlDay, Trend:=False
 '↑オートフィル操作と同じ
 .Offset(0, 1).Value = .Offset(0, 1).Value
 End With
 End With
 End Sub
 
 尚、「Sheet1のA列は文字列の日付ではない」という前提です。
 確認して下さい。
 それと今度は、コードも見せて下さいね!!
 
 |  |