ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:mi960 エクセル X値以上の近似値検索
困り度:
  • 困っています
エクセルで、X値以上の近似値を探す関数を探しています。

X値以下の最大近似値は、VLOOKUP関数で検索できるのですが、X値以上の最小近似値を検索する関数がわかりません。
例:
M2(X値)  メーカー
3.0   A社
3.5   B社
4.2   C社
: :
X値が3.1M2の場合 B社を検索するように関数をつくりたいのですが。
宜しくご教授お願いします。
質問投稿日時:08/04/10 18:11
質問番号:3938006
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

良回答10pt

回答者:mu2011 次の方法は如何でしょうか。
A1:B10範囲をリスト(見出し行あり)として、C1にX値が入力、C2にメーカ名を表示とします。
C2に=INDEX(B:B,SMALL(IF($A$2:$A$10>=C1,ROW($A$2:$A$10),99999),1))と入力、入力完了時にshift+ctrl+enterキーを同時押下して下さい。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/04/11 11:44
回答番号:No.2
この回答へのお礼回答いただきまして、ありがとうございました。
すごいですね、勉強になりました。試してみます。

回答

良回答20pt

回答者:zap35 M2(X値)と書かれた列がA列だとして、D1セルに「3.1」を入力し、適当なセルに以下の式を貼り付けます
 =MATCH(MIN(INDEX(SUBSTITUTE((A1:A100>=D1)*1,0,10^5)*ABS(A1:A100-D1),))+D1,A1:A100,0)

するとA列の値が「3.5」である行の行番号を返します。質問の例では「3」ですね。B列(メーカー)の値を取得したいなら、上記の式にINDEX関数を組み合わせれば良いです
 =INDEX(B:B,MATCH(MIN(INDEX(SUBSTITUTE((A1:A100-D1>=0)*1,0,10^5)*ABS(A1:A100-D1),))+D1,A1:A100,0))
結果は「B社」となるはずです。

データは100行目まであるものとしていますが、必要に応じて変更してください
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/04/10 18:32
回答番号:No.1
この回答へのお礼この回答にお礼をつける(質問者のみ)
 
最新から表示回答順に表示良回答のみ表示