この人頭いいなと思ったエピソード

A列に数値が昇順で並んでます。指定の値に最も近い値が並んでるセルの行番号を知りたいのです。

WorksheetFunction.vlookupを使うと、値は分っても行番号はわからない筈です。
Cells.Find().Row を使うと、行番号はわかりますが「最も近い」値はわからない筈です。

マクロを組め!との御指摘があるかも知れませんが、便利な関数があるのならそれで済ませたいです。何かありませんか?無ければ諦めます。

A 回答 (1件)

とりあえず、一案です。


B1セルに指定の値が入っているとして、
B2セルにでも
=MIN(ABS(A1:A2000-B1))
とでも入れて、Ctrl+Shift+Enterで配列関数にすると
もっとも誤差が少ない数値が出ます。
B3セルにでも(エクセル2013の場合)
=IFERROR(MATCH(B1+B2,A:A,0),MATCH(B1-B2,A:A,0))
とすれば、その値が入っている行番号がでますが
プラス側、マイナス側で誤差が全く同じ場合にどちらの値を優先にするか
それを決めなくてはなりませんね。
    • good
    • 0
この回答へのお礼

ありがとうございます。
よく考えたら、Vlookupで近い値を求めて、その値をCells.find.Rowで調べたらいいですね。

お礼日時:2014/11/02 16:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報