- 締切済み
excel関数について。
以下のURLで、なぜ、CHOOSEの部分を、IF({TRUE,FALSE},C3:C8,A2:A7)に変えても同じ結果なのでしょうか?この関数(IF({TRUE,FALSE},C3:C8,A2:A7)の事)はどういう意味があるのでしょうか?ご教授いただけないでしょうか?すみません。 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12241336457
- みんなの回答 (12)
- 専門家の回答
みんなの回答
- bunjii
- ベストアンサー率43% (3589/8249)
>3,2をCHOOSE関数の戻り値の内3列目と2列目を同一数式で2つのセルへ代入するのかと思いました。 私の憶測通りでしたね。 VLOOKUP関数の仕様は第1引数が検査値、第2引数が検査範囲、第3引数が戻り値を指定する列番号、第4引数が検査方法になっています。 一般的な使い方では検査値が1つ、戻り値が1つです。 但し、検査値が複数(1列×n行)で戻り値が複数(1列×n行)や検査値が複数(n列×1行)で戻り値が複数(n列×1行)という特殊な例もあるでしょう。 あなたの提示では検査値が1つで戻り値が複数(2列×1行)という要望のようです。 この場合は戻り値の引数(列番号)が2つ必要となるため配列(2列×1行)を意味する{3,2}を第3引数にします。 これを理解するには模擬データをシートに配置して何処のセルへ何処の値を抽出するかを考えて関数式を組み立てながら思考錯誤して脳トレしなければならないでしょう。
- bunjii
- ベストアンサー率43% (3589/8249)
>表示させたかったというより、=VLOOKUP(E3, CHOOSE({1,2,3},C3:C8,B2:B7,A2:A7),{3,2},0) この数式の意味は、何でしょうか? あなたが提示した「=VLOOKUP(E3, CHOOSE({1,2,3},C3:C8,B2:B7,A2:A7),3,2,0)」は引数が多すぎてエラーになるので憶測で3,2をCHOOSE関数の戻り値の内3列目と2列目を同一数式で2つのセルへ代入するのかと思いました。 そのため、CHOOSE関数の第3引数を1行×2列の配列として返すための記述にしてみました。 >もともとこの数式は、bunjiiさんが言った事ですよね。 いいえ、前述のようにあなたが提示していた数式に誤りがあったので訂正させていただいたものです。
- bunjii
- ベストアンサー率43% (3589/8249)
当方ではExcel 2010で検証しています。 >A1:E8は、何も入力されていません。 >で、数式は、F3:G3に入力したいです。 A1:E8に何も入力されていなければ検索値のE3はブランクなので数値の0と同じになり、検索範囲のC3:C8も全て0と等価になります。 従って、配列数式の入力先であるF3:G3にはA2:B2の値({0,0})が表示されます。 つまり、正常な動作と判断できます。 あなたはF3:G3にどのように表示したかったのですか? 尚、回答No.8で検索範囲が昇順または降順のときTRUEでも良いような表現でしたが昇順のみ目的に合う結果を得られます。(降順では正しい検索ができません)
補足
表示させたかったというより、=VLOOKUP(E3, CHOOSE({1,2,3},C3:C8,B2:B7,A2:A7),{3,2},0) この数式の意味は、何でしょうか?ちなみに、当方は、Microsoft 365のexcel2016です。スピルが使えるバージョンなのでしょうか?もともとこの数式は、bunjiiさんが言った事ですよね。ご教授いただけないでしょうか?すみません。もし、新しい質問を立てて下さい。というのであれば、立てますので。 よろしくお願いします。
- bunjii
- ベストアンサー率43% (3589/8249)
「=VLOOKUP(E3, CHOOSE({1,2,3},C3:C8,B2:B7,A2:A7),{3,2},0) 」 >この数式の意味は、どういう意味でしょうか? 回答No.8と関係が無いように思われます。 まず、A1:E8にどのような値を入力されているかを提示してください。 次に、提示の数式を何処のセルへ入力したいかも提示してください。 >これは、 2つとも0になりました。 2つとも0になる原因を検証したいのですが模擬データをいただけませんか? テスト用の模擬データが無いと検証できません。 >もう一つあって、 添付のURLはあなたの質問ではないですよね? 関係のない数式を参考にするのは無意味です。
補足
A1:E8は、何も入力されていません。 で、数式は、F3:G3に入力したいです。ご教授いただけないでしょうか?
- bunjii
- ベストアンサー率43% (3589/8249)
>再度すみません。=VLOOKUP(E3, CHOOSE({1,2,3},C3:C8,B2:B7,A2:A7),3,0)とも言えるのでしょうか?これでも、B2:B7は、遊んでいるだけという事でしょうか? はい、CHOOSE関数の戻り値は6行×3列になりますが、VLOOKUP関数では第1列のC3:C8からE3と同じ値を検索して一致する行番号の3列目の値のみです。 従って、2列目のB2:B7は全くの無駄です。(遊んでいると言うより無用の配列値です) >最後のVLOOKUP関数の 1は、false で見つかるものを、trueで見つけても良いという事でしょうか? この補足に提示された検索条件は0なのでFALSEですよ。 良いか否かは状況次第です。 VLOOKUP関数の検索条件のFALSEは検索範囲の並びが順不同でも検索値と同じ値のみ探しますが、TRUEの場合は並び順が昇順または降順に並んでいないと目的の値を返さないことがあります。 尚、整列されていれば検索値が検索範囲に無いときは超えた値の1行上が返り値の行番号になります。 具体的な説明は模擬データを提示して頂けないと無理です。(幾つかの組み合わせを提示してください)
補足
=VLOOKUP(E3, CHOOSE({1,2,3},C3:C8,B2:B7,A2:A7),{3,2},0) のように1行×2列の配列値を求める場合は数式の確定時にCTRL+Shift+Enterの同時打鍵が必要です。(数式の入力先も1行×2列を同時選択します) これは、 2つとも0になりました。この数式の意味は、どういう意味でしょうか?もう一つあって、 https://oshiete.goo.ne.jp/qa/12304313.html で、しかし、数式を直してみれば解りますが「配列の一部を変更できません」と出てきます。はどういう事でしょうか?ご教授いただけないでしょうか?すみません。
- bunjii
- ベストアンサー率43% (3589/8249)
回答No.5の補足に対する助言です。 「=VLOOKUP(E3, CHOOSE({1,2,3},C3:C8,B2:B7,A2:A7),3,2,0)」は引数が多すぎるので正しい処理になりません。 >これでも、B2:B7は、遊んでいるだけという事でしょうか? どのような結果を期待していますか? =VLOOKUP(E3, CHOOSE({1,2,3},C3:C8,B2:B7,A2:A7),{3,2},0) のように1行×2列の配列値を求める場合は数式の確定時にCTRL+Shift+Enterの同時打鍵が必要です。(数式の入力先も1行×2列を同時選択します) >最後のVLOOKUP関数の 1は、false で見つかるものを、trueで見つけても良いという事でしょうか? はい、FALSEで見つかるものはTRUEでも見つかるはずですが検索範囲の1列目が順列になっていないと目的の結果を得られません。 回答No.5の例示では検索範囲が順列になっているようです。 質問者の思考は「葦の髄から天井を覗く」ような状態のようです。 また、自分で検証することも必要かと思います。
お礼
ここのNo.5 の事です。ご教授いただけないでしょうか?すみません。
補足
再度すみません。=VLOOKUP(E3, CHOOSE({1,2,3},C3:C8,B2:B7,A2:A7),3,0)とも言えるのでしょうか?これでも、B2:B7 は、遊んでいるだけという事でしょうか?最後のVLOOKUP関数の 1は、false で見つかるものを、trueで見つけても良いという事でしょうか?ご教授いただけないでしょうか?すみません。 でした。
- SI299792
- ベストアンサー率47% (774/1618)
FALSE とTRUE、1と0の違い位は解るでしょう。 どのように検索したかで使い分けます。 前も書いた様に、これはExcel を理解する上うえで弊害にしかなりません。 エクセルをできなくなりたいのなら、頑張って身に着けて下さい。 エクセルができるようになりたいなら、理解できないままにして下さい。
- SI299792
- ベストアンサー率47% (774/1618)
これらは解らくていい。むしろ解らない方がExcel は上達しまる。 私はVBA も使いこなしていまが、このやり方は知らなかったし、知らなくても何の問題もありませんでした。そのくらいヘテロドックスなやり方です。十分な力もないうちにヘテロドックスやり方を身に着けるのは弊害にしかなりません。プロ(インストラクター等)になろうというのでない限り、不要な知識です。 =IF({TRUE,FALSE},C3:C8,A2:A7) グーグルスプレッドシートではエラーになります。互換性が無いという点でも、使わない方がいいです。 >CHOOSE関数に引数を3つ指定する =VLOOKUP(E3,CHOOSE({1,2,3},C3:C8,B2:B7,A2:A7),3,1) という書き方もできます。この場合、 検索範囲、C3:C8 表示範囲、A2:A7 です。B2:B7 は何をしているのか、何もしていません、遊んでいます。 デメリットだけで何のメリットもありません。私はこの知識を封印します。貴殿もエクセルが上達したいのであれば、この知識を封印した方がいいです。
補足
=VLOOKUP(E3, CHOOSE({1,2,3},C3:C8,B2:B7,A2:A7),3,2,0)とも言えるのでしょうか?これでも、B2:B7 は、遊んでいるだけという事でしょうか?最後のVLOOKUP関数の 1は、false で見つかるものを、trueで見つけても良いという事でしょうか?ご教授いただけないでしょうか?すみません。
- SI299792
- ベストアンサー率47% (774/1618)
>以下のURLの、No.2で、Falseが先で、 Trueが後から来るというのはどういう事でしょうか? このサイト、なんかややこしい書き方ですね。{}は左が先です。 {TRUE,FALSE}なら TRUE が先 {FALSE,TRUE}なら FALSEが先。 =IF({TRUE,FALSE},A2:A7,C3:C8) =IF({FALSE,TRUE},C3:C8,A2:A7) 同じです。 >あちらの式とは、どの式の事でしょうか? 済みません。解りにくい表現でした。 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12241336457 にある =VLOOKUP(E3,CHOOSE({1,2},C3:C8,A2:A7),2,1) の事です。
お礼
CHOOSE関数に引数を3つ指定する場合は、IF関数で同様の動作をするように置き換えが可能なのです(第1引数の値を都合よく変える必要はありますが)とは、どういう事でしょうか?ご教授いただけないでしょうか?すみません。
補足
https://oshiete.goo.ne.jp/qa/12302300.htmlのNo.2について、以下の文はどういう意味でしょうか?ご教授いただけないでしょうか? 質問にある式を、配列数式として同じ行数である6行分の範囲へと 2列で範囲選択して、質問にある数式を記載します。 [ Ctrl+Shift+Enter ]キーで配列数式にすると、A2:A7の範囲が左の 列に、C3:C8の範囲が右の列に配置されます。 ここはどうやればいいのか分かりません。
- bunjii
- ベストアンサー率43% (3589/8249)
>この関数(IF({TRUE,FALSE},C3:C8,A2:A7)の事)はどういう意味があるのでしょうか? 一般的な使い方でIFの第1引数は1つの変数ですが質問の数式では第1引数が1行×2列の配列変数({TRUE,FALSE})になっています。 そのためIF関数の返り値はn行×2列の配列になります。 提示の数式ではIF関数の第2引数と第3引数は1列×5行の配列になっていますので第1引数の2列×1行の配列に対応する2列×5行の配列が返されます。 尚、IF関数の第1引数の配列でTRUEは0以外の数値、FALSEは0と等価になります。 また、定数の配列変数は{}で括り列の区切りをカンマとし、行の区切りをセミコロンとするよう定められています。
- 1
- 2
補足
3,2をCHOOSE関数の戻り値の内3列目と2列目を同一数式で2つのセルへ代入するのかと思いました。 そのため、CHOOSE関数の第3引数を1行×2列の配列として返すための記述にしてみました。 ここについて、もう少し詳しくご教授いただけないでしょうか?すみません。