プロが教えるわが家の防犯対策術!

以下のURLで、
https://detail.chiebukuro.yahoo.co.jp/qa/questio … の、VLOOKUP関数で表しているのですが以下のこの数式の意味について、ご教授いただけないでしょうか?これです。
F3セルの関数は、VLOOKUP関数でも可能です =VLOOKUP(E3,CHOOSE({1,2},C3:C8,A2:A7),2,1)
よろしくお願いします。

A 回答 (6件)

>すみません。

返信が来たのですが、
>この数式の意味は、どういう意味でしょうか?ご教授いただけないでしょう>か?すみません。
>IF({TRUE,FALSE},C3:C8,A2:A7)

すでに質問内容に記された本来のご質問とは全く異なるご質問になってしまっています。

ご質問者は、私が確認できる範囲だけでも3つ以上の複数のサイトで、複数の回答者とやり取りしているのかもしれませんが、基本的にご質問者自身ではない回答者が、それらのやりとりをすべて承知しているわけではありません。

どういう場面で、やりとりされたのかも全くわかりませんので、返信された方にお尋ねになるのが筋だと思います。

ただ、推測を交えてヒントを示すととすれば、実際にその数式を任意のセルに記述したうえで、C3:C8およびA2:A7にデータを入力し、私がNo.2の回答でお示ししたように数式を記述したセルの数式バーの「fx」をクリックして「ダイアログボックス」を表示してみれば、その数式が何をしようとしているのかわかるはずです。
尤も、他のサイトでの回答者の説明は相当詳しく説明されており、それを読めばこの数式の仕組みも理解できると思います。既にわかっていて質問しているのかも知れませんが・・・。
結論だけ言えば、この数式の効果はCHOOSE({1,2},C3:C8,A2:A7)と同じです。

なお、前回回答にも書きましたが、次々とご質問されるのではなく、疑問はひとつひつ片付けていくという考え方に改められた方がよろしいかと思います。
    • good
    • 0

No.2、3、4です。


似たような質問を他サイトも含め繰り返しておられるようですね↓
https://detail.chiebukuro.yahoo.co.jp/qa/questio …
https://oshiete.goo.ne.jp/qa/12296882.html
解決したい課題があるのは判りますが、前回質問をクローズされずに、次々と似た様な質問を繰り返すのは、あまり感心できません。

上記URLでご質問され、回答をごらんになってお判りのことと思いますが、前回回答したとおり、数式作成者の意図が「完全一致【だけ】を探す」という意図であれば、VLOOKUP関数の第四引数は「0」でなくてはいけません。

しかし、ご質問者が示されたURLの説明は、LOOKUP関数の説明が中心ですので、これも前回回答したとおりLOOKUP関数の機能として「完全一致だけを探す」のは困難です。
そこで、このURLの回答者さんは「完全一致【も】探す」という一例を示して、結果として完全一致を検索できたことを示しているに過ぎません。そもそも、この回答者さんは「完全一致だけを探す意図」については一言も言及していません。

「完全一致だけを探す」と「完全一致も探す」では結果が同じになることもあるし、異なることもあるわけです。ここが、混乱の元ではないかと思います。
    • good
    • 0
この回答へのお礼

すみません。返信が来たのですが、
この数式の意味は、どういう意味でしょうか?ご教授いただけないでしょうか?すみません。
IF({TRUE,FALSE},C3:C8,A2:A7)

お礼日時:2021/04/10 10:44

>すみません。

このURLのF3セルに入力する関数で、VLOOKUP関数を使う場
>合は、第4引数は、0ですよね?ご教授いただけないでしょうか?すみませ
>ん。

ご質問者がお示しになられたURLの説明はLOOKUP関数、VLOOKUP関数、HLOOKUP関数の違いについて述べているだけです。
従って、ここでは「第四引数が0」とは特定されていません。
前回回答で示したように、このURLの図のE3に10と15の間にある11を検索値にして、F3に「11はCグループに属する」という結果を導きたいのであれば、「第四引数が1」ということも十分考えられます。
つまり、数式の作成者がどういう結果を導く意図なのかによって第四引数が0なのか1なのかが決まるのであって、前述のURLでは数式作成者の意図についての説明はなく、判りかねますので何とも言えません。

ただ、このURLの回答者さんはLOOKUP関数の使用場面を中心に解説しています。
そもそもLOOKUP関数ではMicrosoftサポートの解説によると、
「LOOKUP では、検査値が見つからない場合、検査範囲内で検査値以下の最大値が、一致する値として使用されます。」
ということですので、VLOOKUP関数でいえば「第四引数が1」の状態で検索することを意味しています。
このため、
「F3セルの関数は、VLOOKUP関数でも可能です =VLOOKUP(E3,CHOOSE({1,2},C3:C8,A2:A7),2,1)」
という説明の意味は「(第四引数を1にして、CHOOSE関数と組合せれば)VLOOKUP関数でもLOOKUP関数の代わりに使えますよ」という意味だと理解すべきです。
    • good
    • 0

No.2です。


>なぜ、 1にしたのでしょうか?0ではないのでしょうか?ご教授いただけな>いでしょうか?すみません。添付画像の①②両方です。

大変失礼ですが、1にしたのは、私ではなくご質問者自身です。
ご質問の内容が
=VLOOKUP(E3,CHOOSE({1,2},C3:C8,A2:A7),2,1)
という数式の意味を解説して欲しいというものになっています。

つまり、ご質問の前提がVLOOKUPの最後の引数である「検索の型」は「1」ですと、ご質問者が指定されたのでそのまま例示しているだけです。
従って、「なぜ、1にしたのでしょうか?」という質問は、ご質問者からではなく私からお尋ねしたい問題です。

そんなことを言っていても建設的でないので、話を先に進めます。
お問い合わせのVLOOKUP関数の「検索の型」では「0(FALSE)」と「1(TRUE)」が使えますが、「0(FALSE)」とした場合、1つめの引数「検索値」に完全一致する値を検索します。一方、「1(TRUE)」とした場合、「検索値」を超えない最大値を、一致する値(近似一致)とみなします。

実務の場面では、お問い合わせのように「0(FALSE)」を使って完全一致を検索するケースが多いと思いますが、添付画像③のように、完全一致でなく「どの範囲にあるか」を特定するようなケースでは「1(TRUE)」を使います。この場合、検索される値は昇順に並んでいないと正しい結果になりません。
完全一致を検索する場合、検索される値に検索値と一致したものがないと「#N/A」が返りますが、 近似一致の場合は一致したものがなくても前述の「検索値を超えない最大値」に対応した抽出値(結果)が返ります。

なお、前回回答の添付画像①②の例では、検索される値が昇順に並んでおり、検索値も検索される範囲に存在する値であるため、完全一致する値と「検索値」を超えない最大値が同一です。

従って、この場合、「検索の型」は「0(FALSE)」でも「1(TRUE)」でも、抽出値(結果)は同一になります。

長文になりましたが、最後に一つ書いておきます。
このご質問をご覧になった方は既にお気づきの方が多いと思いますが、このご質問にあるVLOOKUPとCHOOSE関数の組合せはHLOOKUP関数とCHOOSE関数の組合せとして応用可能です。ただしこの場合、CHOOSE関数に記述する配列定数は「{1,2}」ではなく、「{1;2}」(カンマ区切りでなくセミコロン区切り)にする必要があります。列方向ではなく行方向に順番を指定する必要があるからです。
「関数について。」の回答画像3
    • good
    • 0
この回答へのお礼

すみません。このURLのF3セルに入力する関数で、VLOOKUP関数を使う場合は、第4引数は、0ですよね?ご教授いただけないでしょうか?すみません。

お礼日時:2021/04/09 15:37

>検索範囲の部分が分かりません。

ご教授いただけないでしょうか?すみません。

VLOOKUP関数について、EXCELの教科書的に説明するなら、
「VLOOKUP関数の第2引数は検索範囲ですが、この引数は必須です。参照する表のセル範囲を指定します。指定したセル範囲の左端の列(左から1列目)には、検索値が含まれている必要があります。またセル範囲内に検索値に対応する抽出値(結果)の値も含める必要があります。」
ということになります。
検索範囲が添付画像①「A10:B15」のように指定したセルの左端の列に検索値が含まれる場合には何の問題もなくVLOOKUP関数を使用できます。EXCELの教科書でも普通に解説されています。
問題はご質問者のお尋ねの添付画像②の
=VLOOKUP(E3,CHOOSE({1,2},C3:C8,A2:A7),2,1)・・・・・・(1)
という数式です。
こちらは表上では検索値の列が抽出値(結果)の列の右側にあります。さらに、A列とC列が段違いになっており、行ずれがあります。
一般にEXCELの教科書的な記述では、このような場合はVLOOKUPは使用できず、その代わりとしてINDEX~MATCHを使用して
=INDEX(A2:A7,MATCH(E3,C3:C8,1))・・・・・(2)
という数式にすると説明されています。

ご質問の対象である、上記(1)の数式はこの教科書的指導を無視して、敢えてVLOOKUP関数を使おうという挑戦です。

まずCHOOSE関数を使用します。CHOOSE関数は「=CHOOSE(インデックス,値1,値2,値3・・・)」という形で使用し、値1,値2,... の引数には、数値、セル参照、名前、数式、関数、または文字列を指定できます。 つまり、セル範囲を指定することができるのです。
そこでインデックスに{1,2}という配列定数を記述します。これは、1及び2を意味し、値1、値2に記述されたものをその順に列方向に選択することを意味します。値1にC列、値2にA列を指定しているので、表上では右側にあるC列がA列より先に選択されることになるため、検索値が抽出値(結果)より左側にある状態にできることになります。
数式の中身を検証するため、数式を記述したセルを選択して、数式バーの「fx」を押すと、添付画像のようなダイアログボックスが表示されます。
添付画像①と添付画像②に各々表示されているダイアログボックスの「範囲」の右側にある「={5,"A",10,"C",15,"E",20,"G",25・・・」の部分を比較して見てください。数式は異なっているのに全く同じ内容になっていることが判ります。
つまり、結果として、添付画像②の数式、上記の(1)は添付画像①の数式と同じ結果が得られるということになり、教科書的解説でいうところの上記(2)の数式の代わりに使用できるということになります。
「関数について。」の回答画像2
    • good
    • 0
この回答へのお礼

なぜ、 1にしたのでしょうか?0ではないのでしょうか?ご教授いただけないでしょうか?すみません。添付画像の①②両方です。

お礼日時:2021/04/09 01:37

VLOOUP関数の使い方はご存じですか?


 VLOOKUP(検索値,検索範囲,返す列の位置,検索方法)
です。

そんなわけで、質問にある数式は、
  検索値:E3
 検索範囲:CHOOSE({1,2},C3:C8,A2:A7)
 列の位置:2
 検索方法:1……検索値以下で最も大きい値を返す
という事ですが、何が分かりませんか?
    • good
    • 0
この回答へのお礼

検索範囲の部分が分かりません。ご教授いただけないでしょうか?すみません。

お礼日時:2021/04/07 20:06

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