どうしても出来ないので教えていただきたいのですが
エクセルでA列に延々と数値データが入っています
グラフにするとノイズのような小さな山が続いて次に大きな山が二つでき
またノイズのような小さな山が続く
ってこんな感じの数値データなのですが
このデータから一つ目の大きな山の最大値を抽出したいんです
一つ目の山の方が大きいとは限らないので
MAX関数は使えません
山はデータ中のどこにできるかわからないので
何行から何行までって限定することもできません
わかり辛い表現で申し訳ないのですが
よろしくお願いします
No.5ベストアンサー
- 回答日時:
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2006/9/3 ユーザー名 :
'
'
NoizeCut = 2
lastl = Range("A65536").End(xlUp).Row
Range("B1").FormulaR1C1 = "=MAX(C[-1])/" & NoizeCut
Range("B2:B" & lastl).FormulaR1C1 = "= IF(RC[-1]<R1C,0,RC[-1])"
Range("C2:C" & lastl).FormulaR1C1 = "=IF(RC[-1]=0,0,R[-1]C+1)"
yama1num = WorksheetFunction.Max(Range("C2:C" & lastl))
yama1row = WorksheetFunction.Match(yama1num, Range("C2:C" & lastl), 0) - yama1num + 2
Debug.Print yama1num, yama1row
Range("C" & yama1row & ":C" & yama1row + yama1num - 1).ClearContents
yama2num = WorksheetFunction.Max(Range("C2:C" & lastl))
yama2row = WorksheetFunction.Match(yama2num, Range("C2:C" & lastl), 0) - yama2num + 2
Debug.Print yama2num, yama2row
If yama2row < yama1row Then
yama1row = yama2row
yama1num = yama2num
End If
MsgBox "最初の山の最大値は" & WorksheetFunction.Max(Range("A" & yama1row & ":A" & yama1row + yama1num - 1))
End Sub
でっちあげです。NoizeCutは調整願います。
No.4
- 回答日時:
こんばんは。
Wendy02です。例えば、私の#3の例で言えば、
時系列に対して、
1つ目
=INDEX(B1:C25,SMALL(INDEX((C2:C26<>"")*ROW(C2:C26),,),COUNTIF(C2:C26,"")+1),1)
2つ目
=INDEX(B1:C25,SMALL(INDEX((C2:C26<>"")*ROW(C2:C26),,),COUNTIF(C2:C26,"")+2),1)
となります。ただし、あくまでも、区間の取り方によって、山の数が変わります。
でも、確か、きれいな山を描いているなら、例えば、ヒストグラムのふたこぶの山とかなら、別の方法があったような気がします。
質問しながら、忘れた頃の締め切りになって
本当にすいませんでした
結局、うまくいかず未だグラフより、数値を読みとっております
どうもありがとうございました
No.3
- 回答日時:
こんにちは。
元のデータは何ですか?
株価の推移の曲線のそれぞれを山を出すものに似ています。その上に点(散布図のマーカー)を乗せます。
VBAでは、特殊なアルゴリズムを使って出しますが、そういうコードは、逆にむつかしくなるような気がします。株価とは限りませんが、以下のようなサンプルを作ってみました。
(行数は省略:1行目から)
サンプル
A B C
1 高値 高値更新 区間高値
115.8
115.9
116.1
115.7
115.9
116.9 116.9 116.9
116.9
118.3 118.3
119.4 119.4
122.3 122.3
125.0 125.0 125.0
123.4
125.7 125.7
126.3 126.3 126.3
123.7
123.9
124.0
121.9
120.4
116.9
116.9
120.0
123.0 123.0 123.0
118.7
B7 からの数式 (区間は5行) = 5日間
=IF(A7>MAX(A2:A6),A7,"")
C2 からの数式
=IF(AND(B2>0,B3=""),B2,"")
これで、それぞれの山が取れます。
区間の幅は、ご自身でお決めください。
なお、散布図で、マーカーを取る時は、同じ項目軸を取らないと、まったく違う場所に行ってしまいます。
この回答への補足
回答ありがとうございます
データは電流値でグラフとしてはふたこぶらくだのこぶのような形になります
これの一つ目の山のピーク値を出したいんです
No.2
- 回答日時:
構想だけですが。
まずノイズをカットするために、使えないとおっしゃるMAXを算出して、その2~5分の一(適切な値は自分で決めて下さい)以下のデータは無視します。
例えばB列が空きなら、B1に
=MAX(A1:A65536)/3
[仮に3/1を適用する場合]
B2に
=IF(A2<B$1,0,A2)
それを下方向にオートフィルします。
その結果残ったデータで山というのはノイズと見なされなかったデータが連続している部分になるかと思います。
C3に
=IF(B3=0,0,C2+1)
それを下方向にオートフィルすると連続している部分がよくわかるので後はVBAでなんとかなりませんか?
この回答への補足
回答ありがとうございます
やってみたんですけど、確かにノイズはカットできますが、やはり最初の山のピーク値をどうやって抽出すればいいのかが、わかりません
わかりづらい表現で申し訳ないのですが
よろしくおねがいします
No.1
- 回答日時:
恐らくVBAでないと難しいと思われます。
(関数でもやろうと思えば出来なくもない気はしますが・・・)
問題は、大きな山と言っていますが、何をもって大きな山とするかということです。
ある数値を基準にその数値を超えたら大きな山とするのか、隣合う数値を比較し、数値差がある値以上であれば大きな山とするかです。
そのポイントさえ決めてしまえば、後はそんなに難しくないと思います。
この回答への補足
わかりずらい表現ですいません
実は機械を動作させたときの電流を計測しているのですが
電源オンから動作を終了するまでの電流で最初は全くのノイズが出ている状態からスタートして動作電流が流れてまたノイズに戻るって感じの波形になります
動作電流とノイズははっきりと区別できるくらいの違いがあります山はふたこぶらくだのこぶみたいな感じで出るので
その一つ目の山のピーク値がとりたいんです
質問しながら、忘れた頃の締め切りになって
本当にすいませんでした
結局、うまくいかず未だグラフより、数値を読みとっております
どうもありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセル関数のスペシャリストの方、教えてください。 写真のように A列にはデータ C列にはデータの中 7 2022/04/09 00:15
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- ソフトウェア エクセル_データ処理_変化点検出について 1 2022/09/20 18:25
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Visual Basic(VBA) VBAで大量データの処理 3 2022/11/15 21:53
- Access(アクセス) スキルシートのエクセルの項目に 2 2023/04/04 22:41
- Excel(エクセル) エクセルのグラフに上下限値の横棒を表示させたい 5 2022/12/12 11:09
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
F9キーについて。
-
Excel 小さくなったスクロール...
-
Excel関数について教えてくださ...
-
計算能力
-
Excelセルを跨いで合計を出す方法
-
Excelに詳しい方! B列が「日...
-
エクセルでファイルの最終更新...
-
Excelのピボットグラフの作り方...
-
Excelファイルが開けません
-
Excel 2019 [オプション]の[リボンのユ...
-
【EXCEL】画像の黄色部分の抽出...
-
スプレッドシートの関数につい...
-
エクセルで 自動的に◯や数字を...
-
excel2013 MonthDays 関数が使...
-
シフト表をエクセルで作るとき...
-
EXCELの散布図で日付が1900年に...
-
特定の文字列を含む、住所を抽...
-
Excel分数の表示について
-
エクセルの関数について教えて...
-
マイクロソフトのPADを使ってい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報