[[20090528191508]] 『5秒毎のデータの平均を1分値にまとめる方法』(yuki18888) ページの最後に飛ぶ

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

 

『5秒毎のデータの平均を1分値にまとめる方法』(yuki18888)
 質問内容
 WindowsXP Excel2003を使用しています。

 5秒毎のデータの平均を1分値にしてまとめなければいけないのですが、
 量が膨大すぎて、よいやり方をご存知であれば、教えて下さい。
 8時間分が一週間分あります。

 日付               A    B
 2009/5/1 7:00:00  0.6  1.5
 2009/5/1 7:00:05  0.8  1.2
 2009/5/1 7:00:10  0.3  3.2
 2009/5/1 7:00:15  1.5  1.5
 2009/5/1 7:00:20  0.8  1.5
 2009/5/1 7:00:25  0.8  1.5
 2009/5/1 7:00:30  0.8  1.2
 2009/5/1 7:00:40  0.3  1.5
 2009/5/1 7:00:45  0.8  1.2
 2009/5/1 7:00:50  0.3  1.5
 2009/5/1 7:00:50  0.8  1.2
 2009/5/1 7:00:55  0.8  1.2

 上記の平均を1分毎にして別シートにて書き出します。
 2009/5/1 7:00     0.7 1.5  
 2009/5/1 7:01     0.5 1.2
     ・
   ・
   ・

 エクセルは簡単な演算ぐらいしか使用したことがありません。
 まわりにも詳しい方がおらず、よいやり方をご存知の方がいらっしゃれば
 教えて下さい。


 このようにするのは、どうでしょう?              (PENSIONER)

 E1に=A1、
 F1に=B1、
 G1に=ROUND(AVERAGE(C1:C12),1)、
 H1に=ROUND(AVERAGE(D1:D12),1)と入力して、

 空白行11行を含めE1:H12を選択してH12セルの右下隅の+印を下にフィルドラッグします。

 下まで選択した状態のまま、メニューから編集、ジャンプ、セル選択、空白セルをON、OKとし、
 右クリック削除上方向にシフトをON、OKとします。EからH列に1分単位の表ができます。 

 ==  途中図  ==

  A     B    C  D  E     F    G  H
 2009/5/1 7:00:00 0.6 1.5 2009/5/1 7:00:00 0.7 1.5
 2009/5/1 7:00:05 0.8 1.2				
 2009/5/1 7:00:10 0.3 3.2				
 2009/5/1 7:00:15 1.5 1.5				
 2009/5/1 7:00:20 0.8 1.5				
 2009/5/1 7:00:25 0.8 1.5				
 2009/5/1 7:00:30 0.8 1.2				
 2009/5/1 7:00:40 0.3 1.5				
 2009/5/1 7:00:45 0.8 1.2				
 2009/5/1 7:00:50 0.3 1.5				
 2009/5/1 7:00:50 0.8 1.2				
 2009/5/1 7:00:55 0.8 1.2				
 2009/5/1 7:01:00 0.6 1.5 2009/5/1 7:01:00 0.7 1.5
 2009/5/1 7:01:05 0.8 1.2				
 2009/5/1 7:01:10 0.3 3.2				


 こんばんは(くぅ)
ピボットテーブルも使えますが、ABを列に並べる方法がわかりません。
こういった形か、A・B別のテーブルになりそうです。

 7時    0分	平均 : A	0.716666667
		 平均 : B	1.516666667
	1分	平均 : A	0.599184149
		 平均 : B	0.803379953
	2分	平均 : A	0.481701632
		 平均 : B	0.09009324
	3分	平均 : A	0.403379953
		 平均 : B	-0.385431235

 Aのみ表示の場合こんな感じ
7時     0分	0.716666667
	1分	0.599184149
	2分	0.481701632
	3分	0.403379953

時とか分は表示設置で変えることができます。

もしやってみようと思われたら、
メニューのデータの中にあります

グループとアウトラインの設定で、分単位に集計し、
フィールドの設定で平均を選びます。


 質問の文章では、時間情報がどの列にあるかわからなかったので、
 PENSIONER さんの回答のように A〜D列にデータがあることを想定した回答です。

 計算式でもできるかと思いましたが、数万行のデータでは時間がかかりそうでした
 ので、マクロにしてみました。

 WorkSheet1 にデータがあった場合、WorkSheet2に平均を計算する式を設定します。

 (1)ALT+F11を押して表示されるウィンドウで、挿入⇒標準モジュールをクリックし、
   そのウィンドウに下記をコピーしてください。
 (2)先頭の 「Sub SetAverage()」の行をクリックし、F5を押してください。
 これで、シート2に計算結果ができているかと思います。

 Sub SetAverage()
    Dim ws1 As Worksheet
    Set ws1 = Worksheets(1)

    Dim ws2 As Worksheet
    Set ws2 = Worksheets(2)

    Dim averageFormulaC As String
    Dim averageFormulaD As String
    averageFormulaC = "=AVERAGE(" & ws1.Name & "!C@S@:C@E@)"
    averageFormulaD = "=AVERAGE(" & ws1.Name & "!D@S@:D@E@)"

    Dim i As Long
    Dim lastRow As Long
    lastRow = ws1.Cells(Rows.Count, "A").End(xlUp).Row

    ws2.Columns("A:D").Clear
    ws2.Range("B1").Resize(lastRow, 1).NumberFormatLocal = "hh:mm;@"

    Dim startRow As Long
    startRow = 1
    Dim currentMin As Long
    currentMin = Int(ws1.Range("B1").Value * 1440.001)
    Dim r As Long
    r = 1
    For i = 1 To lastRow
        If currentMin <> Int(ws1.Cells(i + 1, "B").Value * 1440.001) Then
            ws2.Range("A" & r).Value = ws1.Cells(i, "A").Value
            ws2.Range("B" & r).Value = CDbl(currentMin) / 1440#
            ws2.Range("C" & r).Formula = Replace(Replace(averageFormulaC, "@S@", startRow), "@E@", i)
            ws2.Range("D" & r).Formula = Replace(Replace(averageFormulaD, "@S@", startRow), "@E@", i)
            r = r + 1

            currentMin = CLng(ws1.Cells(i, "B").Value * 1440.001)
            startRow = i + 1
        End If
    Next
 End Sub
 (Mook)

 集計という機能でも可能です。ピボットとは別(くぅ)

 集計もデータのところにあります。このほうが簡単かも
日付の列を、セルの書式設定で、時刻の13:30とあるものにし、
「グループの基準」で日付、「集計の方法」で、平均を選び、
A、Bともチェックをいれます。
行番号の左にグループ化表示がでるので、2を選択して、詳細を非表示にすると
下記のように表示されます。あと、可視セルのみコピーします。
7:00 平均	0.716666667	1.516666667
7:01 平均	0.599184149	0.803379953
7:02 平均	0.481701632	0.09009324
7:03 平均	0.403379953	-0.385431235

ピポットも集計も、列の先頭に、タイトルが日付、A,Bという感じで必要です

 ピボット:便利ですが、設定がわかりにくいことも
http://www11.plala.or.jp/koma_Excel/contents3/mame3028/mame302801.html

 集計
http://www.eurus.dti.ne.jp/~yoneyama/Excel/syukei.html

 >くぅ様
 >PENSIONER様

 こんばんは。早々の返信ありがとうございます。
 おかげで、何とか作業を終了することができました。

 まさか、こんな複数のやり方があるとは知らずエクセルの奥深さを知った気分です。

 最初に全てを記載しなかった私が悪いのですが、
 時間がA列でそれ以降C列からY列まで項目があり(B列は空白です)、
 PENSIONER様に教えて頂いたマクロは使うことが出来ませんでした。
 中身を少しいじったりしたのですが、「コンバットエラー」と表示されてしまいました。
 残念です。

 今回はくぅ様にご教授いただきました集計で何とか作業が出来ました。
 また、マクロとかも覚えてみたいです。

 本当にありがとうございました。

 お役に立てたようでよかったです(くぅ)
あまり丁寧な説明でないので、余計だったかもと思ってました。
日付を書式設定で秒切捨て表示にできないようなデータだったらとか思ったのですが、
無事終了のようでよかったです。

 マクロを使用されるにしてもマイクロソフトが用意してくれている機能を活用する方が、
同じ処理なら早いと聞いています。
 すでになさってるかもしれませんが、このような処理がよく発生してくるようなら、
マクロの記録をして編集されるといいかもしれません。


コメント返信:

[ 一覧(最新更新順) ]


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