• ベストアンサー

VBA 指定値に最も近い値のセルの行番号は?

A列に数値が昇順で並んでます。指定の値に最も近い値が並んでるセルの行番号を知りたいのです。 WorksheetFunction.vlookupを使うと、値は分っても行番号はわからない筈です。 Cells.Find().Row を使うと、行番号はわかりますが「最も近い」値はわからない筈です。 マクロを組め!との御指摘があるかも知れませんが、便利な関数があるのならそれで済ませたいです。何かありませんか?無ければ諦めます。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.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)) とすれば、その値が入っている行番号がでますが プラス側、マイナス側で誤差が全く同じ場合にどちらの値を優先にするか それを決めなくてはなりませんね。

High_Score
質問者

お礼

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