『XLOOKUP 戻り範囲を可変させたい。』(ヘラちょんぺ)
XLOOKUPで、戻り範囲を可変させようと考えていますが、#VALUEエラーとなります。
前提として 検索させるテーブルは以下の内容です。
A列 B列 C列 D列 E列
本体1 OPA-1 OPA-2 OPB-1 OPB-2 …
本体2 OPA-2 OPA-3 OPB-1 OPB-3 …
本体3 OPA-3 OPA-4 OPB-2 - …
ここで範囲名を、A列を「本体」、B・C列を「OPA」 D・E列を「OPB」とします。
それを踏まえて、別シートで以下の表を作成したいと考えています。
A1セルに検索値となる本体名、B列に戻り値となる範囲名を入力して、
C列にはXLOOKUP関数で、上記引数から呼び出した値を表示したいと思います。
A列 B列 C列
1 本体A OPA OPA-1,OPA-2
2 OPB OPB-1,OPB-2
(実際にはC列の内容は入力規則のリスト候補にしたいと考えてます。)
それを踏まえて、上記の場合C1セルに、
=XLOOKUP($A$1,本体,B1) あるいは
=XLOOKUP($A$1,本体,INDIRECT(B1))としてみましたが、#VALUEエラーが返されます。
なお戻り値はセル参照でなく、直接範囲名とした場合はきちんと返されます。
恐らく戻り値の参照方法がまずいと思いますが、対処方法がわからないので、
お知恵をお借りしたく、お願いします。
ちなみにこの発想に至った経緯として…
とある機器の発注票を作りたいと考えており、本体毎に対応したオプションを入力規則からのリストで入力させたいと考えております。
上記では端折っていますが、実際には本体1台に最大30品目と多いのと、
オプション群ごとにシートを作るのも、後のメンテが大変なので、
上記のように範囲名で仕切って、リストを絞れないかと思った次第です。
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
戻り値である配列をセルに代入する際に、「スピル」という機能が働いて、
配列を1つずつセルに代入されるだけです。
「セル参照でなく、直接範囲名」とは、
C1セルのお話をしているのでしょうか?
もし、C1セルの話をしているのなら、「#VALUEエラーが返されます」の時の
C1セルに入力した値(式)を教えて下さい。
>=XLOOKUP($A$1,本体,B1) あるいは
>=XLOOKUP($A$1,本体,INDIRECT(B1))としてみましたが、#VALUEエラーが返されます。
ちなみに、こちらでテストしたところ、どちらも
「#VALUE!」は出ずに参照した値が、C列、D列に表示されます。
(匿名) 2024/08/02(金) 17:13:27
既に指摘がありますが、ROWS(本体),ROWS(OPA),ROWS(OPB)をそれぞれ確認してください。一致していますか?
(xyz) 2024/08/03(土) 09:23:35
匿名さん 誤解を招き大変失礼しました。
正確には、「戻り範囲となる範囲名をセル参照ではなく、式内に直接書き込んだ場合」でした。
でもそうなると、逆になぜそれで成立したのか、それはそれで不思議ですが…
QEDさん なるほど、仕組みを理解しました。
(ヘラちょんぺ) 2024/08/04(日) 10:57:43
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.