エクセルで3個の山になっている連続数値データがあります。
0.3
2.5
5.8
7.6
3.5
0.2
3.0
6.2
7.9
4.5
0.1
2.7
5.2
7.3
3.3
0.3
といった具合です。
このデータはたとえのデータで、実際の連続データの行数は3000行くらいです。
今は、まずこのデータのグラフを描いて、そのグラフの山をみてから、該当するおよその行を選択して、MAX関数で最大値を3つ別々に求めています。
この方法以外にそれぞれの3つの山の最大値を得る便利な方法がありましたら教えてください。
よろしくお願いします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
もしも、各ピークの値に大きな差があって、最も低いピークの値が平均値よりも低くなる事もあり得る場合には、次の様な方法は如何でしょうか?
各行の上下に適当なセル範囲を決めて、そのセル範囲内の最大値とその行に入力されている値が等しければ、その行の値がピーク値だと判定する方法です。
具体的には以下の様な方法となります。
今仮に、元データがA2以下に並んでいるものとして、F2セルに各行毎にプラスマイナス何行分の範囲内のデータの中から最大値を求めるのかを指定する整数値を入力し、H列とI列を作業列として使用して、D1~D3セルにピーク値を表示させるものとします。
まず、F2セルの書式設定の表示形式を[ユーザー定義]の
±0
として下さい。
次に、F2セルに対して、次の様なデータの入力規則を設定して下さい。
入力値の種類・・・整数
データ・・・・・・・・・次の値より大きい
最小値・・・・・・・・・0
次に、I2セルに次の数式を入力して下さい。
=IF(AND(ISNUMBER(INDEX($A:$A,ROW())),MAX(INDEX($A:$A,MAX(ROW($A$1)+1,ROW()-$F$2)):INDEX($A:$A,ROW()+$F$2))=INDEX($A:$A,ROW())),MAX(INDEX($A:$A,MAX(ROW($A$1)+1,ROW()-$F$2)):INDEX($A:$A,ROW()+$F$2)),"")
次に、H2セルに次の数式を入力して下さい。
=IF(OR($M2="",COUNTIF($M:$M,">="&$M2)>3),"",ROW())
次に、H2~I2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。
次に、D1セルに次の数式を入力して下さい。
=IF(ROWS($1:1)>COUNT($H:$H),"",VLOOKUP(SMALL($H:$H,ROWS($1:1)),$H:$I,2))
次に、D1セルコピーして、D2セルとD3セルに貼り付けて下さい。
後は、F2セルに「各行に入力されている値が、ピーク値であるか否かを判定する際に、上下方向、±何行の範囲内の最大値を求めて比較する事で判定するのか」を指定する整数値を入力しますと、(その指定した範囲内に他の山のピークが存在する場合を除いて)3つのピーク値が自動的に表示されます。
尚、ピークが4つ以上存在する場合には、ピーク値の高さが4番目以下のピークは無視されます。
又、添付画像の例では、データのピーク同士が近接しているため、F2セルで指定する行数を3行と少ない行数としていますが、ノイズによる変動がある事を考慮する必要がある場合には、F2セルに入力する値はもっと大きな数とする必要があります。
但し、複数の山が近接していて、F2セルで指定した行数よりも近い範囲内に、低い方のピーク値よりも高い値が入力されている行が存在している場合には、正しいピーク値を抽出する事が出来ませんので、F2セルで指定する範囲は広過ぎても狭過ぎても不都合が生じる原因となります。実際のピークの感覚やノイズの影響を考慮された上で、F2セルで指定する行数を調節して下さい。
No.3
- 回答日時:
[No.2]の添付図訂正
セル G1 の表示「5.8」は「7.3」の間違いでした。m(__)m
No.1
- 回答日時:
一つのアプローチとしては、例えば「平均より上半分」を切り出してカタマリになっている範囲を目視で捕まえ、それぞれの区間の最大を取るような方法も可能です。
B1:
=IF(A1>=AVERAGE(A:A),A1,"")
以下コピー
仮に平均値を閾値としましたが、あなたの目で見て適当な値を与えてももちろん構いません。たとえば「7で切る」とか。
またご質問に書かれたそのデータだけを見れば、数字が「上昇から下降に転じた値」を計算させれば出てきます。
C2:
=IF(AND(A1<A2,A2>=A3),A2,"")
以下コピー
しかし現実のデータはジグザグしながら上がったり下りたりするモノですから、通常こんな単純なやり方じゃ、うまくいきません。
ピークtoピークの計算がどうしても必要なら、レインフロー処理をしてからピークを拾います。計測器の付属ソフトが使えるときは使ってください。
あるいは「ジグザグ」がノイズであると判断できるなら、移動平均によってノイズをなまらせ、あなたがご質問で書かれたような単純増減するデータにしてから簡単にやっつける事も出来ます。「ピーク」の意味をよく考えてデータ処理を選んでください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Visual Basic(VBA) VBAで大量データの処理 3 2022/11/15 21:53
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- 計算機科学 エクセルのデータの表すことについて 2 2023/03/05 20:49
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- 統計学 統計学、エクセルがわかりません!解答と詳しい解説をお願いします! (1)それぞれの地域別に記述統計量 9 2022/08/21 16:30
- Excel(エクセル) 【エクセル関数】アルファベットで以上だったらカウントする 4 2022/07/09 14:07
- 統計学 風速を1秒刻みで推定する方法 6 2023/03/03 11:58
- Excel(エクセル) エクセルデータの集計、一つのセルに複数のデータがある場合 7 2022/12/28 20:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】スペースがいくつ入っ...
-
西暦や和暦の表示をyyyymmdd表...
-
【Microsoft Office Excel Comp...
-
Excelはなんで先頭の0を消すん...
-
Excelのセルを飛ばして入力する
-
別シートからの文字を変更
-
エクセルの行の抽出について質...
-
Excelのオートフィル
-
Excel 2019 のピボットテーブル...
-
スプレッドシート クエリ関数 1...
-
excelの不要な行の削除ができな...
-
Excel初心者です。 詳しい方、...
-
【Excel】セル内の時間帯が特定...
-
Excel初心者です。 詳しい方、...
-
EXACT関数とIF関数の組み合わせ...
-
Excelのグラフ軸について
-
スマートな関数を教えて下さい。
-
Excelで全角を半角にしたいので...
-
【マクロ】エクセルにかいてあ...
-
Excel:一部のフォントでセルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報