[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『LOOKUP関数について。』(コルム)
https://www.ipentec.com/document/office-excel-difference-between-lookup-vlookup-and-hlookup のLOOKUP関数で、検査値が2の場合は、検査値以下の最大値となる"1"のセルが該当したと判断されます。LOOKUP関数の戻り値は最終行の値が返されるため、"3" がLOOKUP関数の戻り値になります。の所で、検査値は何を意味しているのでしょうか?教えていただけると幸いです。すみません。
< 使用 アプリ:Microsoft365、使用 OS:Windows10 >
その解説者は嘘を書いています。 読んでも無駄です。
>検査値は何を意味しているのでしょうか? ID(1、2、3)であることは明らかじゃないですか?
(半平太) 2021/09/02(木) 15:41
> >検査値は何を意味しているのでしょうか? > ID(1、2、3)であることは明らかじゃないですか?
ちょっと語弊がありました。m(__)m
一行目の中から探そうとしているとすると、何をやっているのか意味不明なので、 検索値は合理的な何かを意味しているとは言えない。
単に、その行を対象に2と言う数値を検索してみたらどうなるか、 Lookup関数の挙動を試しただけに過ぎない。
(半平太) 2021/09/02(木) 16:00
行 _A_ __B__ ________C________ __D__ 1 ID 価格 品名 重量 その行とは 2 1 210 ぺんぎんクッキー 0.2 ← この行です 3 2 120 しろくまアイス 0.12 4 3 90 らくだキャラメル 0.08
式は =LOOKUP(A7,A2:D4)
範囲「A2:D4」の第一行目です。
(半平太) 2021/09/02(木) 19:33
>なぜ結果が3になるのでしょうか
そんな事は考えるだけ無駄なんですよ。 下のヘルプに書かれているように、正しい保証がない結果について どうしてそうなるかなど分析するのはエネルギーの浪費です。 >行 _A_ __B__ ________C________ __D__ > 1 ID 価格 品名 重量 > 2 1 210 ぺんぎんクッキー 0.2 ← この行は昇順になっていないです。
【ヘルプ】 重要 配列に入力されている値は、... .. のように コード順の昇順に配置されている必要があります。 そうでない場合、LOOKUP 関数は正しい値を見つけることができません。
(半平太) 2021/09/02(木) 20:58
>では、これも嘘という事でしょうか?
それは正しい。
でも、それは戻り値についての話です。 まず最上行で検索が正しく行われているのが大前提です。
>なぜこの行が昇順になっていないのでしょうか?
「この行」が昇順なら、右方向に大きくなっていると言うことです。 一目で昇順じゃないことは明らかじゃないですか。?
> _A_ __B__ ________C________ __D__ > ID 価格 品名 重量 > 1 210 ぺんぎんクッキー 0.2 ← この行
大体「ID、価格、品名、重量」なんて項目のデータが昇順になるハズがないですし、 そんなデータを検索対象行に選ぶこと自体がナンセンスです。 コルムさん自身も「検査値(2)は何を意味しているのでしょうか?」と疑問を持ったでしょう?
(半平太) 2021/09/03(金) 09:26
>無意味な戻り値の3ということでしょうか?
議論の中身を「数式の有意義性」と「LOOKUP関数の挙動」を一緒にしてしまった感があります。 m(__)m
1.数式の有意義性について 「この行」の中に2を検索するのは無意味なのだから 戻り値が3であろが、何であろうが無意味なのは明らかでしょう。
行 _A_ __B__ ________C________ __D__ 1 ID 価格 品名 重量 2 1 210 ぺんぎんクッキー 0.2 ←この行 3 2 120 しろくまアイス 0.12 4 3 90 らくだキャラメル 0.08 5 6 7 2 3 ← =LOOKUP(A7,A2:D4)
2.LOOKUP関数の挙動について
(1) Webサイトの解説は嘘である ※検査値が2の場合は、検査値以下の最大値となる"1"のセルが該当したと判断されます。
試しに D2セルの重量を 0.2→1.5 に変更してみてください。
上の解説が正しいなら、検査値以下の最大値となるのは「1.5」に変わりますから D4セルの「0.08」が戻ってこないとおかしいですよね?
実際B7セルはどうなったですか? 0.08にならなかったら嘘という事になりますよ。
(2) 検索値「2」で、何故「3」が返るのか
LOOKUP関数は2分探索を行います。 まず、「この行」のデータの中間値(210)を見て、 ア. 検索値より大きいと判断したら小さい方向(左)に検索を続けます イ. 検索値より小さいと判断したら大きい方向(右)に検索を続けます
今回のサンプルでは、上記「ア」に該当するので、左方向に探索を続けます。 普通はもっとデータがあって、A列と210の列との中間値を更にチェックしに行くのですが、 今回は単純なサンプルなので、検索はそこで終わり1をヒットします。
1と2は違うので、本来はエラーなんですが、見つからない場合は「内輪の最大値」とする仕様なので 1が正式なヒット値になります。このため、1のある列の最下行のB4セル(3)が返ることになります。
(半平太) 2021/09/03(金) 16:56
>(1)は、なぜ、0.08が戻り値でないと嘘なのでしょうか?
(1)の中で説明していますけど? もう一回読んでください。
それで、D2セルの重量を 0.2→1.5 に変更したら、B7セルの値は何になったのですか? ただ聞くだけじゃなく、自分の手足を動かしてくださいよ。
>(2)は、もっとデータがある場合は、どうやって、A列と210の列の中間値を探すのでしょうか?
細かく説明するのはしんどいので、 ネットで「2分探索」のキーワードで検索し、 その記事を読んで理解してください。
対象が順番に並んでないと意味を為さないことも分かるハズです。
>内輪の最大値とはどういう事でしょうか?
1,2,3,4,5 と言う数列があったとして、 検索値を4.5にした場合、4.5を越えない範囲の最大値ということです(つまり4となる)
(半平太) 2021/09/03(金) 21:28
>何も変わりません。 検索値(A7)の値に 1・2・3以外にも 300やらくだ等を入れてみては (はまちゃん) 2021/09/04(土) 10:38
>Excelで試しましたが、何も変わりません。3のままです。どういう事でしょうか?
同じ事を聞かないくださいよ。
Webサイトの解説は嘘なんです。先述のレス(1)で説明したでしょ? 「3のままの理由」も先述のレス(2)で説明したでしょう?
(半平太) 2021/09/04(土) 10:53
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.