- ベストアンサー
エクセル関数を使った特殊検索
エクセルの表に数字が縦にランダムに並んでいます。 数字の大きさは6000~12000です。 このとき、並んでいる数字の中で7000以下の数字で、且つ行列番号が一番若い(表の上にある)数字を検索したいのですが、エクセルの関数だけで可能でしょうか? バージョンは2003です(WINXP)
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
最善の方法かどうかはわかりませんが、以下の方法で結果は出ます。 数字データがB1から入っているとして、 (1)・・・A1に =IF(B1<=C$1,1) (2)・・・D1に =IF(ISERROR(VLOOKUP(1,A:B,2,0)),"",VLOOKUP(1,A:B,2,0)) (3)・・・(1)を数値データの最終行までオートフィル。 (4)・・・A列の幅を0(ゼロ)にする。 →C1に7000を打つと、D1に結果が表示されます。
その他の回答 (3)
a1~a100 まであるとして =index($a$1:$a$100,match(true,(a1:a100)<=7000,0),) 入力しshift +ctrl +enter を同時に押し { 数式} 配列数式にしてください。
- imogasi
- ベストアンサー率27% (4737/17070)
関数の難しいのと違って、上の行から30(質問の場合7000)と比較していって、初めて30を下回るものがあれば、 その行の値を返し、そこで作業を打ち切り、と考えるとおりに組めます。すなわち エクセルのユーザー関数を定義します。 ツール-マクロ-VBE,の画面で、挿入ー標準モジュール そこに Function uu(a, b) For Each cl In a If cl < b Then uu = cl Exit Function End If Next End Function を貼り付けます。 シートのセルに たとえば =UU(A1:A15,30) と入れます。 意味は、A1:A15のセルなかで、上の行から調べて、初めて見つかる30より小のセルの数字を返します。 「30以下など」ならIf cl <= b Then にします。
- mshr1962
- ベストアンサー率39% (7417/18945)
上記がA列として =INDEX($A$1:$A$5000,SUMPRODUCT(MIN(ROW($A$1:$A$5000)*100000^($A$1:$A$5000>7000))),1) ※行の範囲はすべてご使用の範囲に合わせてください。