- ベストアンサー
EXCELで平均のデーターを簡単に出したいのですが…
EXCELで0.6秒ごとに表示されたデーターがあるのですが、1秒につき10つのデーターの平均を出し、それをグラフにしたいのです。 やはり1秒ごとの平均を地道に出してから新しいデーターを作成するしかないのでしょうか? 説明が下手なので分かりにくいかもしれませんが、簡単に表示させる方法があればぜひ教えてください。 よろしくおねがいします。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
データの横に1秒経過毎の平均を求めて表記するのも良いですが これではデータの拾い出しが大変ですよね? なので 値とその値の筆頭となるセル番地とその値全体の平均値を示す一覧表を作ってみました いやー何気に苦労しました 正しい検出タイミングデータを自動算出させるところでまず躓きました 結局 =TEXT("15:00:00"+INT(ROW(A1)*"0:00:06"/100/"0:00:01"+0)*"0:00:01","h:mm:ss")&":"&TEXT(MOD(ROW()*6,100),"00") が、一番正確のようですね 次に 1秒繰り上がるデータ位置をちゃんと検出するのにも苦労させられました 上記式と0:00:00:06×nの値とは誤差があるのでね~ … 取り敢えずデータがA1:Bnにあるものとします ではいきます C1に =IF(OFFSET($A$1,MATCH(ROW()-1,INDEX(INT(0.06*ROW(A:A)),),0)-1,0,1,1)="","",MATCH(ROW()-1,INDEX(INT(0.06*ROW(A:A)),),0)) と入力してください 次に D1に =IF(C1="","",LEFT(OFFSET($A$1,C1-1,0,1,1),LEN(OFFSET($A$1,C1-1,0,1,1))-3)) と入力してください 続いて E1に =IF(C2="","",AVERAGE(OFFSET($A$1,C1-1,1,C2-1,1))) と入力してください 最後に 今入力したC1:E1をC1:E70にコピーしてください これで一覧の完成です スキャンタイミング幅を変える場合は C列の式中の …INDEX(INT(0.06*ROW(A:A)… の「0.06」を新しい値に変えた上で 一覧表を必要なサイズまで拡張してください ところで 計算してみたのですが 現ヴァージョンまでのエクセルだと.06秒刻みの場合 70秒に達する前に全行を使い果たしてしまうようです 足りますか?
その他の回答 (9)
- zap35
- ベストアンサー率44% (1383/3079)
#02です 適当なセルに 15:00:00(時刻型)を入力します(ここではD1とします)。E1に =SUMPRODUCT((LEFT($A$1:$A$10000,8)*1=D1)*($B$1:$B$10000))/SUMPRODUCT((LEFT($A$1:$A$10000,8)*1=D1)*1) で平均が求まりませんか? D2に15:00:01の時刻を入れてオートフィルすればそれ以降の時刻も簡単に作れるでしょう。E1は下にコピーしてください
お礼
何度も回答ありがとうございます。 教えていただいた関数さっそく試してみます ありがとうございました
- koko88okok
- ベストアンサー率58% (3839/6543)
#7の方が言われれるように、0.1秒刻みのデータなので、=SUM(B1:B10)のような式で、1秒当たりのデータが得られるのではないでしょうか?
お礼
回答ありがとうございます。 間違った質問をして申し訳ありません。 ありがとうございました
- Cupper
- ベストアンサー率32% (2123/6444)
>1行目 15:00:00:06 200 (中略) >10行目 15:00:01:00 262 チョット待った! これ、0.6秒じゃない。0.1秒ですよ。 データ10個で1秒と言うことで、1秒間にあるデータの平均を1秒ごとに取りたいと言うのですか。 なんかようやく質問の意図が納得できた気がします。 C1に数式を書いて、C1からC10までセルを選択してください。 C1=AVERAGE(B1:B10) そしてC10の左下から下へフィルコピー。 これで解決します。 (C2からC10まで何も書いてないのがミソです)
お礼
回答ありがとうございます 説明が下手ですみません。 それに根本的に間違っていますね… 0.1秒も60進法と勘違いして質問してました。 本当にややこしくてすみません。 ありがとうございます
- maron--5
- ベストアンサー率36% (321/877)
◆こういうことでしょうか? A列 B列 1行目 15:00:00:06 200 2行目 15:00:00:12 221 3行目 15:00:00:18 233 4行目 15:00:00:24 244 5行目 15:00:00:30 277 6行目 15:00:00:36 232 7行目 15:00:00:42 256 8行目 15:00:00:48 225 9行目 15:00:00:54 221 10行目 15:00:01:00 262 11行目 15:00:01:06 234 ・ ・ ・ C1=AVERAGE(OFFSET($B$1,(ROW(A1)-1)*10,,10)) ★下にコピー
お礼
回答ありがとうございます。 教えていただいた関数で思うようなデーターが取れました。 ありがとうございます
- suzuko
- ベストアンサー率38% (1112/2922)
#4です。あちゃ。式が抜けていました。 =AVERAGE(B1:B10)/6 でしたね。済みません。
- suzuko
- ベストアンサー率38% (1112/2922)
ようやく意味を理解しました。 その場合、C列の10行目に =AVERAGE(B1:B10) と入力し、次にC10をコピーしてC20のセルに貼り付け、次にC1からC20をコピーしてC21に貼り付けと言った具合に、延ばされてはいかがでしょうか? 少しは面倒が減るかも・・・・
お礼
回答ありがとうございます 回答者様のやり方が1番わかりやすいかもしれませんね。 ありがとうございます
- Cupper
- ベストアンサー率32% (2123/6444)
質問からは2通りの解釈ができるのですが・・・。 0.6秒ごとにスキャンしたデータを順に10個取り出し、1秒あたりの平均値を求めたいというのでしょうか。 であれば、 10個のデータの合計を取り、データ10個分の時間で割る C1=SUM(B1:B10)/(0.6*10) これをデータの続くところまでフィルでコピー(※注釈)する ※注釈:C列のC1セルからデータの終わりの行までを選択して、[Ctrl]+[D] または、0.6秒ごとにスキャンしたデータが10チャネル分あって、その1秒あたりの10チャネルの平均を出したいと言うのでしょうか。 であれば、移動平均的な演算を行なうしかありません。 A B C D E F G H I J K 1 0.6 1 2 3 4 5 6 7 8 9 10 2 1.2 1 2 3 4 5 6 7 8 9 10 3 1.8 1 2 3 4 5 6 7 8 9 10 4 2.4 1 2 3 4 5 6 7 8 9 10 このようなデータの場合、 まず、一行目の平均、二行目の平均を足して、1.2秒で割る 次に、二行目の平均、三行目の平均を足して、1.2秒で割る 次に、三行目の平均、四行目の平均を足して、1.2秒で割る ・・・(以下繰り返し)・・・ L1=(AVERAGE(B1:K1)+AVERAGE(B2:K2))/1.2 または L1=AVERAGE(B1:K2)/0.6 1秒あたりの見込みの平均値でよければ、一行ごとの平均値を0.6で割る L1=AVERAGE(B1:K1)/0.6 として、L1からデータの続くところまでフィルでコピーする 一つ目の考え方は、平均を取るスキャン回数を増やすことで【突発的なノイズを平滑化】する効果があります。 明らかにノイズと思われるデータが混在するのであれば、この考え方で良いと思います。 多くの時間データの平均をとることで滑らかな変化で捉えることができます。ただし、データの変化に対して遅れ(遅延)を生じます。 二つ目の考え方は、1秒間に測定されるデータの【予測】になります。 予測データとして使用するのであれば、この方法で十分です。 とにかくフィルでコピーすれば手間は掛かりませんよ。
お礼
回答ありがとうございます。 私の分かりにくい質問にここまで答えていただいて助かりました。 最初の計算式を使ってみました。 フィルコピーではC1=SUM(B2:B11)/(0.6*10)にずれちゃいますよね… できればC1=SUM(B1:B10)/(0.6*10)をフィルでコピーすればC1=SUM(B10:B20)/(0.6*10)となれば楽なのですが… エクセルではムリなのかもしれませんね。 簡単な計算式を教えていただいただけでも助かりました ありがとうございました
- zap35
- ベストアンサー率44% (1383/3079)
0.6秒毎にデータがサンプリングされるのに「1秒あたり10個のデータ」とはどのような意味でしょう? A列 B列 1行目 xxxx yyy 2行目 xxxy zzz のように先頭数行を示していただくと理解できそうです。 また求めたい結果のイメージと、A列の書式がどのように設定されているかも併記お願いします(回答は朝以降になるかもしれませんが)
お礼
回答ありがとうございます。 本当に分かりにくい質問で申し訳ありません。 A列 B列 1行目 15:00:00:06 200 2行目 15:00:00:12 221 3行目 15:00:00:18 233 4行目 15:00:00:24 244 5行目 15:00:00:30 277 6行目 15:00:00:36 232 7行目 15:00:00:42 256 8行目 15:00:00:48 225 9行目 15:00:00:54 221 10行目 15:00:01:00 262 11行目 15:00:01:06 234 ・ ・ ・ とあるのですが、この1秒ごとのデーターの平均が欲しいのです。 それには10行ごとの平均をだせばいいのですが、量が膨大なので簡単に平均をだせれば…と思っているのです。 これでも説明が不足してるかもしれませんが、もしよろしければアドバイスいただければありがたいです よろしくおねがいします
- suzuko
- ベストアンサー率38% (1112/2922)
1秒ごとのデータのセルは行か列が同じなのでしょうか? もし同じならば、 例えば、BとDの列が1秒ごとのデータならば、集計したいセルに =AVERAGE(B1,D1) と入力すれば、平均は出ますし、 =AVERAGE(B1:B6,D1:D6) ならば1行目から6行目までのB,Dの平均が出せます。
お礼
回答ありがとうございます 説明が下手で申し訳ありません。 A列に時間(0.6秒ごと)B列にデーターが入力されています。 データーの量が膨大なので、1秒ごと10個のデーターの平均を取るのは正直めんどくさいので、簡単な方法を教えていただければと思って質問させてもらいました。 最初は1秒ごと0.0秒の値をVLOOKUPで別のシートに抽出してグラフを作成しようと思ったのですが、1秒の平均値で出す方が確実なデーターを求めれると思うので… もしこのお礼を見られてまた回答いただけたらありがたいです
お礼
回答ありがとうございます。 私のためにこんな複雑な関数を考えてくださって本当に感謝しています。 私の説明が不足していたと思いますが、0.06秒単位ではなく、0.6秒ごとのデーターが取れるので、エクセルの行は大丈夫です。 教えていただいた関数さっそく使わせていただきます。 本当にありがとうございました。