vlookup関数で、検索値にSheet1(Book1)から、範囲は、Sheet2(Book1)のセルにある名前のついているSheet1(Book2), そして、列番号は、指定した名前とマッチするSheet1(Book2)の列番号から、導き出そうとしています。
ところが、Matchで指定した範囲は、Indirect内の関数として認識されないようで、結果が得られません。
たとえば、
Book1のA1~E1にタイトルが入っています。(Index, Title, Book, Author, Frequency)
Book2には、
シート1: InputName
シート2: Output
シート2に以下の関数を入れてみましたが、うまくいきません。
ちなみに、VLOOKUPの列番号を Match関数の代わりに、5 とすると、結果オーライですが、Book1 の列順が変わっていることがあるので、Matchを使ってエラーを避けたいのですが、以下の関数のどこを直すべきでしょうか?
=IF(ISNA(VLOOKUP(C2,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$2:$E$1400"),MATCH("Frequency",$A$2:$E$2,0),FALSE)),0,VLOOKUP(C2,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$2:$E$1400"),MATCH("Frequency",$A$2:$E$2,0),FALSE))
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
> Book2には、シート List のみ。
> A1~E1には、Index, Title, Category, Author, Frequency とあります。
じゃぁ、indirect("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$1:$E$1")でしょう。
No.2
- 回答日時:
唐突に“寿限無”式を提示して「どこを直すべきでしょうか?」と尋ねるより、
1.Book1 に当該「タイトル」が入っている Sheet名
2.そのタイトルの下のレコードサンプル
3.Book2 のシート InputName、Output 上の関連するデータ例
等々を示して、何をしたいのかを簡潔に説明したら如何でしょうか?
回答者に提示式を解読しろというのは横着だと思います。
この回答への補足
ごめんなさい。例を付け加えます。
Book1には、シート InputName と Outputがあります。
InputNameには、A2に、Book2.xls; B2に、List と入力されています。
Outputには、Index, Frequency, Categoryが、A1~C1にそれぞれ入力されています。そして、vlookup関数をB2以降に入れて、Book2のFrequencyに配置されている数値を出力させます。
Book2には、シート List のみ。
A1~E1には、Index, Title, Category, Author, Frequency とあります。
流れは、Book1のInputNameに入力されているファイル名とシート名を呼んで、それに対応するBook2を参照します。
対応するファイルによっては、Index, Category, Frequency, Title, Author, Remarks のように、列順が変わっていることがあります。
そこで、match関数との組み合わせに試行錯誤しています。
どうでしょうか?
No.1
- 回答日時:
> =vlookup(C2,indirect("'["&InputName!$A$2&"]"& InputName!$B
$2&"'!"&"$A$2:$E$1400"),match("Frequency",$A$2:$E$2,0),FALSE)
match関数の第2引数が「$A$2:$E$2」ということは、同じブックの同
じシートを参照しているはず。これがとても変です。
Book2にはImputNameというシートとOutputというシートがあって、
vlookup関数はBook2のOutputシートに書いてあるはずですね。そし
てBook2のImputNameシートには、A2に検索対象のブック名、B2検索
対象のシート名が書いてあるんですね。そこまではわかりました。
そうすると、検索対象となる範囲のしょっぱなに書いてある項目名
をチェックするためにmatch関数が参照すべきはindirect
("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$2:$E$2")
じゃないでしょうか。
この回答への補足
自分の中でも混乱が深まってきましたので、シンプルにしてみました。
目的は、vlookの列番号をmatch関数で出力される値で置き換える。
Book1には、2つのシートがあります。
InputName => このシートのA2 に、参照するブック名; B2 に参照するブックに付帯するシート名(下記の例では、List)を入力します。
Output => vlookup 関数を使って、データを出力します。記載してある項目は、Index, Frequency, Categoryの3つ。Book2のFrequencyの数値の出力。
Book2 には、カタログデータが入っています。(Index, Title, Category, Author, Frequency)が、A1~E1に入っています。シート名は、"List".
Book1;sheet(Output)は、A1~C3にそれぞれ Index, Frequency, Category とあります。
そこで、Book1;sheet(Output) のB2以降に、Cに合致させるFrequencyをBook2から見つけ出す関数が入っています。
match を使わないのであれば、以下の関数で、数値8が得られました。
=IF(ISNA(VLOOKUP(C2,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$C:$E"),3,FALSE)),0,VLOOKUP(C2,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$C:$E"),3,FALSE))
ただし、Book2のカテゴリーリスト項目の位置が変更されていることがあるので、上記の関数にある列番号 3 に、match関数に置き換えたい訳です。
そこで、以下の関数にすると、"Frequency"にマッチする対象を Book1のA1~E1を参照してしまい、Book2を参照してくれません。ここで得られてしまうのは、Book1のFrequencyの位置、つまり、列2です。Book2の列5をMatchで出力したいのですが、、、。
=IF(ISNA(VLOOKUP(C3,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$C:$E"),MATCH("Frequency",$A$1:$E$1,0),FALSE)),0,VLOOKUP(C3,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$C:$E"),MATCH("Frequency",$A$1:$E$1,0),FALSE))
そこで、$A$1:$E$1 に、頂いたアドバイスのように再度 indirect を使って下記のように置き換えてみました。すると、0が出力されてしまいます。
=IF(ISNA(VLOOKUP(C3,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$C:$E"),MATCH("Frequency",INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$2:$E$2"),0),FALSE)),0,VLOOKUP(C3,INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$C:$E"),MATCH("Frequency",INDIRECT("'["&InputName!$A$2&"]"& InputName!$B$2&"'!"&"$A$2:$E$2"),0),FALSE))
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル 指定セル繰り返しマクロ 4 2022/06/06 17:08
- Excel(エクセル) エクセルでエラーを無視して一番左側のセルの値を返したい 2 2023/07/27 13:06
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Excel(エクセル) マクロを簡潔にしたい 6 2022/09/16 10:37
- Excel(エクセル) INDEX関数とMATCH関数を使用し値を返す数式についてです 2 2022/04/20 13:40
- Excel(エクセル) 【Excel関数】値が合致するセルの隣のセルを表示させたい 8 2022/10/12 17:44
- Excel(エクセル) この関数の誤りを教えて下さい。 3 2023/08/08 07:36
- Excel(エクセル) ある数値に対して、値を返す数式についてです 2 2022/09/13 22:06
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルについて質問です。
-
エクセルの「入力規則」のプル...
-
VBAについての質問です
-
関数の説明
-
Excelについて
-
Excelにいついて質問です。
-
[オプション]の[アクセスビリテ...
-
一つのセルに(例えばA1)入力...
-
エクセルで特定のセルに入力が...
-
【マクロ】名前を保存する際に...
-
Excelの関数について教えてくだ...
-
UNIQUE関数が使えないバージョ...
-
エクセル共有したが、アクセス...
-
エクセルファイルがファイルの...
-
Excelで縦軸の書式を0:00形式の...
-
エクセル vbaについて教えてく...
-
【Excel】数字を3倍にし、なお...
-
エクセルVBA、別ブックへ転記す...
-
エクセルであるセルに数字を入...
-
エクセル マクロ チェックボックス
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報