Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


70265 / 76734 ←次へ | 前へ→

【10979】Re:データの件数をカウントして平均値を表示
回答  ichinose  - 04/2/20(金) 21:08 -

引用なし
パスワード
   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列は文字列の日付ではない」という前提です。
確認して下さい。
それと今度は、コードも見せて下さいね!!

0 hits

【10977】データの件数をカウントして平均値を表示 初心者です。 04/2/20(金) 18:54 質問
【10978】Re:データの件数をカウントして平均値を表示 IROC 04/2/20(金) 20:37 回答
【10979】Re:データの件数をカウントして平均値を表示 ichinose 04/2/20(金) 21:08 回答
【10997】Re:データの件数をカウントして平均値を表示 Kein 04/2/23(月) 1:03 回答
【11000】ありがとうございます。 初心者です。 04/2/23(月) 9:31 お礼

70265 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free