質問: vlookupに、indirect と match 関数を組み合わせる 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)) よろしくお願いします。
回答: > book2には、シート list のみ。 > a1~e1には、index, title, category, author, frequency とあります。 じゃぁ、indirect("'["&inputname!$a$2&"]"& inputname!$b$2&"'!"&"$a$1:$e$1")でしょう。