• ベストアンサー

エクセル関数を使った特殊検索

エクセルの表に数字が縦にランダムに並んでいます。 数字の大きさは6000~12000です。 このとき、並んでいる数字の中で7000以下の数字で、且つ行列番号が一番若い(表の上にある)数字を検索したいのですが、エクセルの関数だけで可能でしょうか? バージョンは2003です(WINXP)

質問者が選んだベストアンサー

  • ベストアンサー
  • Poer
  • ベストアンサー率45% (72/157)
回答No.1

 最善の方法かどうかはわかりませんが、以下の方法で結果は出ます。  数字データが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)

noname#63022
noname#63022
回答No.4

a1~a100 まであるとして =index($a$1:$a$100,match(true,(a1:a100)<=7000,0),) 入力しshift +ctrl +enter を同時に押し { 数式} 配列数式にしてください。

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

関数の難しいのと違って、上の行から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)
回答No.2

上記がA列として =INDEX($A$1:$A$5000,SUMPRODUCT(MIN(ROW($A$1:$A$5000)*100000^($A$1:$A$5000>7000))),1) ※行の範囲はすべてご使用の範囲に合わせてください。

関連するQ&A