Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : その他)
Vlookup関数の解釈について (検索型がTrueのとき)
投稿日時: 22/12/03 02:18:37
投稿者: whitekuma

VLOOKUP(検索値, 範囲, 列番号, 検索の型)において、
検索の型=Trueとし、範囲の左端の列にあるデータで、recordを昇順に並べ替えたとする.
 
このとき範囲の左端に同じ値があるとき、sortすると同じdataがつながる.
たとえば、sort結果が
    1    a
    3    b
    5    c
    5    d
    5    e
    6    f
のようになる.
ここで、VLOOKUP(5, 範囲, 2,True) は、eを返した. (第一引数を5.1としても結果は同じ.)
 
この事実は、検索の型にTrueを設定したときのrecord検索は、
「下側から実行され最初に検出された値が返される。」と、一般的に判断して良いか悪いか迷いました。本件に関し、見解を宜しくお願いします。

回答
投稿日時: 22/12/03 09:29:13
投稿者: WinArrow
投稿者のウェブサイトに移動

>「下側から実行され最初に検出された値が返される。」
 
TRUE指定の場合は、数値と文字列で同じにならないと思いますが、
 
TRUEを使う場合、検索範囲は昇順になっていること
が条件になっていますから、「下から検索すること」はありません。
>下側から実行され最初に検出された値が返される。
という理解ではなく、
「検索キーと異なる値になるまで探し、一つ前を返した」
という理解したほうがよいでしょう。
 
検索範囲で、最後の「5」を「5.1」に変更してみると
結果はことなります。

回答
投稿日時: 22/12/03 09:55:59
投稿者: WinArrow
投稿者のウェブサイトに移動

TRUE指定は
近似値の最大値を探しますから、
同じ値が複数存在すると、「値」が変わる前(=じ値の最後)が
対象となります。
結果的には「下から探した」こと一緒になりますが、
処理としては、全体として上から探しているので、
途中だけ、方向を変えることはしません。
複数の値が想定されるならば、事前にCOUNTIF関数で、重複有無を確認したほうがよいでしょう。
 
 

投稿日時: 22/12/03 11:28:01
投稿者: whitekuma

WinArrow 様
 
回答ありがとうございます。
 
>「検索キーと異なる値になるまで探し、一つ前を返した」
により、次のように解釈するの自然であると認識できました。
 
 既に昇順Sort済のTableで、検索型Trueと検索型Falseを比較すると、
Trueの場合はVlookupに設定した検索値のOvershootを検知した後、直近でhitした値を返し、
Falseの場合は、検索途上、最初にhitした時点で値を返す。
 
お世話になりました。