• 締切済み

エクセルの最小値抽出方法について

エクセルで最小値を抽出する方法 みなさん教えてください。 今エクセルで下図のような正弦波のグラフ図中の赤矢印部(ピーク値) で一番小さくなる最小値を抽出したいと思っています。 しかし、方法がわかりません。 MIN関数を使用すると、一番小さい0が出てきます。 データの境目(~以上)と指定してオートフィルタでデータを抽出しようとしても、 データのプロット数が多すぎて境目をみつけるだけでも苦労し、うまくいきませんでした。 何か簡単に抽出できる良い方法はないでしょうか。 みなさんお力をかしてください。よろしくお願いします。 <波形元データ> ※オシロスコープで測定したデータ(CSVファイル:データ数2000行弱) 時間 電圧 0 0.03626667 0.0002 0.037975 0.0004 0.035025 0.0006 0.03514167 0.0008 0.03781667 0.001 0.03830833 0.0012 0.03346667 0.0014 0.03460833 0.0016 0.03616667 0.0018 0.0342 0.002 0.03035 ・ ・ ・ ・ ・ ・

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.11

回答No9,10です。 AおよびB列にお示しのデータがるのですから、C1セルに示した式を入力して下方にオートフィルドラッグで、最小値の式は D1セルに =MIN(c:C) となりますね。大変失礼をいたしました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.10

No9です。より精度を高めるにはB1セルに次の式を入力して下方にオートフィルドラッグします。 =IF(ISERROR(OFFSET(B1,-4,0)),"",IF(AND(AND(OFFSET(B1,-1,0)<B1,B1>OFFSET(B1,1,0)),AND(OFFSET(B1,-2,0)<B1,B1>OFFSET(B1,2,0)),AND(OFFSET(B1,-3,0)<B1,B1>OFFSET(B1,3,0)),AND(OFFSET(B1,-4,0)<B1,B1>OFFSET(B1,4,0))),B1,"")) C1セルには =MIN(B:B)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.9

A1セルから下方にデータがあるとして、作業列としてB1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ISERROR(OFFSET(B1,-4,0)),"",IF(AND(OFFSET(B1,-4,0)<B1,B1>OFFSET(B1,4,0)),B1,"")) これでピークごとに1,2個のデータが表示されますので、C1セルに =MIN(B:B) を入力すれば最小値が表示されますね。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.8

ちなみに移動平均については判りますね? ご相談で掲示されたサンプルのデータで,仮に4点で移動平均を取ってみると添付図のようになり,生のピークが0.03830833を記録しているのに対して0.036531251という計算値をこの山のピーク値だとします。 それでご質問の山の切り方ですがごくごく簡易な方法としては,やはりご質問に掲示されているようなグラフが得られているとすると,0.3の時間間隔の中に10山見えていますから一周期が目安0.03,データのサンプリングタイムが0.002なので,おおざっぱに言ってしまえば0.03÷0.002=150データごとに一山あると見てしまえそうです。 C列に移動平均を計算してあるとすると 開始を51行目からにしてみると =MAX(C51:C200) で一山目のピーク値 =MAX(C201:C350) で二山目のピーク値  : が拾えると期待できます。 また,もっと荒い(10点とかの)移動平均でグラフを平滑にしてしまい,それでゼロを切るそれぞれの時刻を拾ってしまうのでも,多分今考えられた方法で上手く出来ると思います。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.7

あまり自信はないが微分係数が正ー0-負に変化するところが、局地的な極大として考えることから、 第2行目からデータがあるとして B2セルに=IF(AND(A1<A2,A2>A3),A2,"")ト入れて下方向に式を複写 例データ A列  B列 1 2 3 4 5 6 6 5 3 2 3 4 5 6 7 8 9 9 このB列でMaxをとる。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.6

データがB2:B20000として =SUMPRODUCT(MIN(10000^((B2:B20000<=B1:B19999)+(B2:B20000<B3:B20001))*(B2:B20000+1))-1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.1です! 前回の投稿は無視してください。 正弦波なるものを理解していませんでした。 失礼しました。m(__)m

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

基本はピーク(極値)の検出,つまり「上りから下りに変わる点」を拾いたいワケですが,実際のデータではそう簡単には行きません。 ○比較的簡単な方法  データが大まかにゼロを切る点から次のゼロを切る点が「一つの山(もしくは谷)」ですから,その区間ごとに最大値(若しくは最小値)を拾ってしまいます。  山を含んでいれば良いので,区切りが多少ずれていても問題ありません。  一つ一つの山の高さを拾い出せば,あとはその中から一番小さいの(MIN)を拾うだけです。 ○ノイズの問題 生データを直接採取していた場合の主な問題の一つとして,しばしば主たる周波数の上に高周波のノイズが乗っています。つまり単純に「増加から減少に転じた」(前のデータと次のデータを単純に引き算して増減を判断する)だけで検出しようとすると,細かいノイズのイチイチのピークを拾ってしまいます。また前述の方法で生の最大値を拾ってしまうと,ノイズ分だけ上乗せした値を拾う可能性が高くなります。 この問題を解決するため,測定系にローパスフィルタをかませて適切なレンジでノイズ切りをしてあれば,そのままデータを使えます。 データ(つまりグラフ)をよく見てノイズが乗っているような時は,簡易にはノイズ周波数をつぶせそうな個数で「移動平均」をとってもしまう場合もあります。

fukuoka_power
質問者

補足

keithinさん ご回答ありがとうございます。とてもうれしいです。 上記「比較的簡単な方法」の一つひとつの山を拾う方法ですが、具体的に エクセル関数など方法を教えて頂けませんでしょうか。 自分でもいつの山(測定電圧値が0付近になるところ)を探す方法を考えて いるのですが、うまくいきません。 申し訳ありません。 よろしくお願いいたします。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

作業列を使って、頂点を抜き出してそこから最小値を探しては? 添付画像の例では、C3セルに=IF(MAX(B2:B4)=B3,B3,"") と入れて下にコピーしています。 この式は前後合わせて3点のデータを比較し、自行の値が一番大きければ頂点と判断して値を表示しています。 実際には前後3点程度ではちょっとした山も拾ってしまうでしょうからもっと幅を広げた方が良いと思います。

  • minosennin
  • ベストアンサー率71% (1366/1910)
回答No.2

こんな感じではどうでしょうか。外れていたら無視してください。 3列目を作業列として、3列目に各ピークの値を取り出す方法です。 3列目2行目に =IF(AND(B2>B1,B2>B3),B2,"") 下へ必要数ドラッグ これでC列に各ピークの値が表示される 後はMIN関数で。

関連するQ&A

  • excelで決まった間隔の最大最小を求める

    excelで縦に1分おきのデータが並んでいます。 これを100行ずつくくってその範囲の最大、最小を求め 以後それを繰り返し行いたいのですが方法がわかりません。 =MIN(A1:A100) でそれ以降を=MIN(A1+100:A100+100)の ような感じにはいかないのでしょうか? いい方法があれば教えて下さい。 例)1日100個のデータがあります。その中からMIN/MAXを選んで 以降毎日のMIN/MAXのデータのみを抽出してグラフ化したい。

  • Excel 最小値に合致するカテゴリの抽出

    初めて投稿します。よろしくお願いします。 エクセルの行ごとに異なるカテゴリデータが入って(下記のようになって)いるのですが、A列に最小値のデータ、B列最小値のカテゴリを抽出したいのです。 A列の最小値については「=MIN(D2:I2)」で抽出できたのですが、品名を返すことができず手作業しかないかと思っています。 でも、データ数が多くだんだんとわからなくなってきてしまい、このようなことができるのかお聞きしたくて投稿させていただきました。  A列|B列|C列|D列|E列|F列|G列|H列|I列| 最小値|最小値のカテゴリ|空白|品名1|数量1|品名2|数量2|品名3|数量3| 10|バナナ(※自動表示したい)||りんご|50|みかん|100|バナナ|10| 3000|鶏肉(※自動表示したい)||鶏肉|3000|豚肉|5000|牛肉|10000| どのようにお聞きしたら良いのかわからず、説明不足な点があるかと思いますがお分かりの方がいらっしゃいましたらご教示ください。 お願いいたします。

  • エクセルで最小値から0を除く方法

    早速ですが、エクセル入力したデータから最大値と最小値を求めようとしています。 最大値は=MAX(A1:A100)で求められるのですが、最小値には0が入っていると=MIN(A1*A100)では0となってしまいます。 0以外で最小値を求めたいのですが、どのように設定すればよいでしょうか? どなたかご教授いただけると助かります。

  • エクセルで指定月の最小値を抽出したいです

    日頃からお世話になっております。 今回教えていただきたいのは、 エクセルにて指定月の最小値の 抽出方法が分からず困っております。 まずは、簡易化したエクセルが下記です。 ---------- シート1 ----------   A       B 1 2014/5/12 15.1 2 2014/5/23 20.8 3 2014/5/30 10.1 4 2014/6/11 25.6 ---------- シート2 ----------   A(指定月) B(最大値)  C(最小値) 1 2014/5    20.8      ● 2 2014/6    25.6      ● ---------- 上記の構成で、B1に 下記のコードを入れると 正しく最大値は抽出されます。 =MAX(INDEX((YEAR(シート1!A$1:A$65640)=YEAR(A1))*(MONTH(シート1!A$1:A$65640)=MONTH(A1)*シート1!B$1:B$65640,)) しかしながら、シート2のC1に 上記のコードのMAXをMINに 書き換えるだけでは最小値は 抽出してくれません。。。 何かほかに手立てはありますでしょうか? ご教授よろしくお願いいたします。>< ※ちなみにエクセルは Excel2007を使用しております。

  • Excelで最大値最小値の検出

    皆さん こんばんは。  データのExcel配列は下記のようになっています。空白セル(数は不定)を境目に異なるグループに分け、各グループの最大値あるいは最小値を(グループごとに計算すればできますが、データの量が多いので手間かかります)一遍で検出したいですが、何かいい方法はないでしょうか。皆さん教えてください。宜しくお願い致します。 A列     B列        C列      D列     (時間)  (データ)     (最大値)   〈最小値) 0:00   7.316784186 0:05   7.178492184 0:10   7.031467139 0:15 0:20 0:25 0:30   4.878174647 0:35   3.402687629 0:40   2.051343872 0:45   0.420805671 0:50 0:55   2.175188612 1:00   2.849337126 1:05   3.256652642 1:10 1:15   4.427495186 1:20 1:25 1:30 1:35   6.008051928 1:40   6.773041277  ・    ・  ・    ・  ・    ・  ・    ・

  • エクセル最小値から4つ抽出する方法を教えてください

    エクセルで指定する範囲内で、最小値から順番に4つだけ抽出する方法を教えてください。 このようなデータがあります。(実際はすべて8桁で、日付を文字列に変換したものです)   A  B  C  D  1 10    30  2 10    10 20 3 50    50 60 4    70 50 60 ・ ・ ・ A1~D1とA2~D2を1つの範囲(絶対)とし、最大で8個の数値となります。 次の範囲はA3~D3とA4~D4の8個となり、8個ずつが繰り返されます。 この8個のデータの中から重複なしで小さい順に、 A1、B1、A3、B4に反映させたいです。 こういう結果にしたい↓   A  B  C  D  1 10 20     2 30     3 50 60    4 70     ・ ・ ・ 範囲内の最大値は30と70であるため、B4は空白としたいです。 仮にそれぞれの範囲内に40と80があれば、その数値をB4に反映させたいです。 8個のデータは重複するものもあれば、しないものもあり、 空白のものもあれば、空白がないものもあります。 データ数が多いのでフィルタオプションの設定から行わないやり方で 何かあれば教えていただきたいです。 VBA、マクロができないので、関数でできればすごく助かります。 色んなサイトを検索しましたが、該当するものがなくて困っています。 よろしくおねがいします。

  • エクセルで2行あきのデータの最小値を抽出したいです

    エクセル2007を使って、2行あきのデータの最小金額と、 その最小値の品物を表示させたいと思っています。 ↓データはこのようになっています。 ファイルは、 ・品物購入シート ・最小値抽出シート の2シートあり、 品物購入シートの2行おきの最小値を 最小値抽出シートへ 表示させたいと思っています。  2行おきにしたいのは、品物の名前が、順番に合板、ペンキ、ネジ、 合板、ペンキ、ネジ...と同じ順番んで並んでいるためなのですが、 INDEXやMATCH関数を使ってみましたが、エラーで結果がでません でした。 《品物購入シート》    A、  B、  C、 1 金額、品物、購入日 2 120、合板、7/1 3 400、ペンキ、7/1 4 100、ネジ、6/1 5 240、合板、6/1 6 200、ペンキ、6/2 7 150、ネジ、7/2 ・ ・ データが40行くらいあります。 《最小値抽出シート》    A、  B、  C、 1 金額、品物、購入日 2 120、合板、7/1 3 200、ペンキ、6/2 4 150、ネジ、7/2 最少金額を↓このように考えてみましたが、VALUEのエラーがでてしまいました。 =IF(COUNT(MOD(ROW(),2)),MIN(MOD(ROW(),2),"-")) 説明がうまくできず申し訳ないですが、詳しい方どうか教えてください よろしくお願いします。

  • エクセル2013 最小数の計算です

    エクセル2013を使っています。 B30からL30までの最小数を求めるときにM30に =MIN(B30:L30)としますが結果が「0」の時に M30に「{0」を表示しないで「空白」にしたいのですが、何か良い方法がありますか。 よろしくお願いします。

  • VBAでの最小値抽出

    ExcelのVBAにおいて,最小値の抽出方法の質問です. たとえばA1に変数nがあり,A2にnの関数(例えば=n^4-2n^3+5n-10とか)があるとします. A1を1から100まで動かしたときのA2の最小値を求めたいのですが,これはそのまま1から100まで値をズラっと出力すれば,あとはそこから最小値を探すだけで求まりますが,こういう方法はとらず,一発でこの最小値を1つのセルに出力させたいのです. いろいろわけあって,使用するセルを最小限におさえたく,この方法が知りたいのです. よろしくお願いします.

  • エクセルでの波形プロット

    エクセルを用いて、以下の波形をプロットしたいのですが行き詰ってしまいました。 f1(t)=sin(5*2*3.141592*t)・・・式(1) 5Hzの正弦波   f2(t)=sin(5*2*3.141592*t)・・・式(2) 30Hzの正弦波  f3(t)=0.4*rand( )・・・式(3) 乱数  サンプリングインターバルは500Hzでt= 0.002 0.004  :  1 で計測する。 上記の式があるとき、 g(t)=f1(t)+f2(t)+f3(t)で得られる波形を同位相で5周期加算して平均を求め、その波形をプロットする。 波形を同位相でプロットするとはどのような手順で行えば正しい結果が得られるのでしょうか。よろしくお願いします。

専門家に質問してみよう