- 締切済み
vlookup 時刻で検索 近似値 うまくできない
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
VLOOKUP関数は2つの型があり、第4引数のTRUEか、FALSEで左右されます。 だいたい、ここらの質問者はその辺の意識が少ないようで、ここの質問はFALSE型が 圧倒的に多かった。 ・TRUEは範囲のどこに属するかを探すもの ・FALSEは値や文字列そのものを探すものです。 ここの質問では過去に圧倒的にFALSE型が多いのです。 質問者は、質問表現の全般から、エクセル関数の初心者では無いようだし、A列のエントリの値が飛んでいるので、また昇順に並んでいると補足しているので、TRUE型でしょうね。 しかし、こういう質問となれば、改めてそれら目的は明記しないと質問として不完全だと思う。 ーー 私の データ例(このようにテキストで質問に貼り付けてほしい。そのまま、再現テストに使えて手数が省ける) A1:C12 K A M 0 106 0 0.04 107 1 0.07 107 2 0.11 108 3 0.15 109 4 0.18 110 5 0.22 111 6 0.26 111 7 0.29 111 8 0.33 113 9 0.37 114 10 G3に 0.33 H3に =VLOOKUP(G3,$A$3:$C$361,2,TRUE) I3に =VLOOKUP(G3,$A$2:$C$361,3,TRUE) でG3:I3は 0.33 113 9 になりましたが。私の方がおかしいですかね。 ーー TRUE型は解説書では、「検索と一致する値がないときは,検索値より小さい値の最大値が検索される」とあります。 0.33の場合は「検索と一致する値がある」ときに該当します。 0.12の例で考えると同じ式で 0.12 108 3 になります。012がA列のエントリにないので、すぐ上に0.11が存在するのでその行のB,C列を採ったと思う。 もう一度考え直してはどうですか。 私が間違っていたらすみません
- kagakusuki
- ベストアンサー率51% (2610/5101)
=VLOOKUP(G3,$A$2:$C$361,2,TRUE) は、A2:A361の範囲を下から(A361から)上に向かって順番に検索して行った際に、「G3に入力されている値以下」の値が最初に現れた行、即ち、「A列に『G3に入力されている値以下』の値が入力されているセルの中で"最も下にあるセル"」と同じ行のB列の値を返す関数です。 同様に、 =VLOOKUP(G3,$A$2:$C$361,3,TRUE) は、A2:A361の範囲で、「『G3に入力されている値以下』の値が入力されているセルの中で"最も下にあるセル"」と同じ行のC列の値を返す関数です。 ですから、もし「A11セルよりも下のセル」に、「『G3に入力されている0.33』以下の値」が入力されているセルがあった場合、そのセルがある行のB列やC列の値が返される事になります。 その様な事を防ぐためには、A2:A361の範囲の値が昇順になっている様に、並べ替えを行う必要があります。([ホーム]タブの「編集」グループ内にある[並べ替えとフィルター]ボタンをクリックすると現れる[昇順]ボタンを利用して下さい) 【参考URL】 121ware.com > サービス&サポート > Q&A > Q&A番号 016326 https://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=016326
補足
A列は昇順に並んでいるのですが。