excel上で、不規則データ(約数十万件)の平均値を計算したいのですが、
そのデータは以下のようになっています。
a列(日付) b列(時刻) c列(数値)
4/1 0時 123
4/1 0時 256
4/1 0時 456
4/1 1時 777
: : :
4/2 0時 888
4/2 0時 896
: : :
例えば、4/1の0時から1時に変わる単位で、その間(3データ分)の平均値を求める。
次に4/1の1時から2時に変わる単位で、その間のデータの平均値を求めるようにしたい。
また、日付が変わっても同様に処理したいです。
手で範囲指定で平均値を計算する関数を入れても良いのですが、作業効率が悪く、
時間がかかります。何か関数を一律に一気に埋め込んで、変わる単位(ブレークポイント)で
平均値を計算して、どこかのワーク列に出力するなどの処理にしたいですが、
良い方法(関数)をご享受お願いいたします。
No.1ベストアンサー
- 回答日時:
こんばんは!
VBAでの一例です。
E~G列に結果を表示するようにしてみました。
尚、1行目は項目行になっていてデータは2行目以降にあるとします。
Sub Sample1()
Dim myDic As Object
Dim i As Long, lastRow As Long
Dim myStr As String
Dim myKey, myItem, myR, myAry
Set myDic = CreateObject("Scripting.Dictionary")
Range("E:G").ClearContents
Range("E1:F1").Value = Range("A1:B1").Value
Range("G1") = "平均"
Range("E:E").NumberFormatLocal = Range("A2").NumberFormatLocal
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
myR = Range(Cells(2, "A"), Cells(lastRow, "C"))
For i = 1 To UBound(myR, 1)
myStr = myR(i, 1) & "_" & myR(i, 2)
If Not myDic.exists(myStr) Then
myDic.Add myStr, myR(i, 3)
Else
myDic(myStr) = myDic(myStr) + myR(i, 3)
End If
Next i
myKey = myDic.keys
myItem = myDic.items
myR = Range(Cells(1, "E"), Cells(UBound(myKey) + 1, "G"))
For i = 0 To UBound(myKey)
myAry = Split(myKey(i), "_")
Cells(i + 2, "E") = myAry(0)
Cells(i + 2, "F") = myAry(1)
Cells(i + 2, "G") = myItem(i)
Next i
Set myDic = Nothing
Application.ScreenUpdating = False
For i = 2 To Cells(Rows.Count, "E").End(xlUp).Row
With Cells(i, "G")
.Value = .Value / WorksheetFunction.CountIfs(Range("A:A"), Cells(i, "E"), Range("B:B"), Cells(i, "F"))
End With
Next i
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
こんな感じではどうでしょうか?m(_ _)m
こんばんわ、1例というよりも完璧です。
深謝いたします。これを参考に復習してVBAの勉強をいたします。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
- Excel(エクセル) Excelで全クラスのランキング表を作成したい 4 2022/05/24 15:28
- 統計学 t値の計算方法 1 2022/11/29 18:37
- 数学 以下の数学の問題を教えてください。 確率変数Xは標準正規分布N(0、1)に確率変数Yは平均3のポアソ 3 2022/12/02 19:13
- 数学 賃料と専有面積のデータが60部屋分ほどがあり、 賃料÷専有面積(=1㎡あたりの賃料)の数式で計算する 2 2023/02/18 20:33
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- 建設業・製造業 土量算出 3 2022/09/26 19:57
- Excel(エクセル) エクセルでIF関数中にIFERROR関数を使いたいのですが???? 5 2022/04/08 13:24
- 統計学 統計学の問題です よろしくお願いします 回帰直線 次のデータから集計表を作成し,以下の問いに答えよ。 2 2023/01/31 23:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LEFT関数とIF関数の組み合わせ...
-
エクセルで離れた列を選択して...
-
「段」と「行」の違いがよくわ...
-
VLOOKUPの列番号の最大は?
-
エクセルで住所を県と市・郡と...
-
エクセルの列末のデータだけ表...
-
エクセルで最初の行や列を開け...
-
エクセルで複数列の検索をマク...
-
エクセルでセル12個間隔で合...
-
エクセルのシートの大きさを変える
-
リストからデータを紐付けしたい
-
Excel文字列一括変換
-
VBAで結合セルを転記する法を教...
-
CSVファイルの「0落ち」にVBA
-
エクセルマクロPrivate Subを複...
-
横軸を日付・時間とするグラフ化
-
EXCEL VBA 文字列から電話番号...
-
Excelの行数、列数を増やしたい...
-
えABのある列って
-
【マクロ】【VBA】条件付き書式...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
CSVファイルの「0落ち」にVBA
-
エクセルで複数列の検索をマク...
-
Excelの行数、列数を増やしたい...
-
エクセルマクロの組み方
-
エクセルマクロPrivate Subを複...
-
リストからデータを紐付けしたい
-
エクセルのソートで、数字より...
-
エクセルで住所を県と市・郡と...
-
VBAで別ブックの列を検索し、該...
-
VBA
-
Excel文字列一括変換
-
エクセル 重複 隣の列 一番...
-
列方向、行方向の定義
-
Alt+Shift+↑を一括で行うには、...
-
VBAで結合セルを転記する法を教...
おすすめ情報