Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Microsoft 365)
xlookupについて
投稿日時: 23/01/02 20:28:13
投稿者: yoshimitsu

こんばんは、
let関数とかで作成したのですが、うまくいきません!
宜しければご協力お願いします。
 
 
別ブックでシートが1から10まであります。
A1にリストがあり、1から10の変更で、各シートのデータを引っ張りたいのですが、どうしたらよいのでしょうか?
 
=XLOOKUP(B2,[元データ.xlsx]1′!$B:$B,[元データ.xlsx]1′!$AD:$AD,0,0,-1)
             ↑
              この数字の2か所をリストで変更したいのですが、
 
よろしくお願いします。

回答
投稿日時: 23/01/02 21:35:59
投稿者: 半平太

INDIRECT関数を噛ませるとことになりますかねぇ。
 
=LET(s,"'[元データ.xlsx]"&A$1&"'!",XLOOKUP(B2,INDIRECT(s&"B:B"),INDIRECT(s&"AD:AD"),0,0,-1))

投稿日時: 23/01/03 07:58:11
投稿者: yoshimitsu

半平太様
ありがとうございます。
 
元データを立ち上げないとエラーになるので、フルパスをsに代入しようとしたのですが、うまくいきませんでした。
 
"とかの付け方が悪いのでしょうか?
引き続きよろしくお願いいたします。

回答
投稿日時: 23/01/03 08:45:03
投稿者: んなっと

右のほうあいているところに必要な列だけすべてまとめて取り出しておいて、その範囲を参照しましょう。
 
例えばZ1に
=HSTACK('E:\Office\Excel\[元データ.xlsx]1:10'!$B1:$B1000,'E:\Office\Excel\[元データ.xlsx]1:10'!$AD1:$AD1000)
 
としておいて、
=XLOOKUP(B2,CHOOSECOLS($Z$1#,$A$1),CHOOSECOLS($Z$1#,$A$1+COLUMNS($Z$1#)/2),0,0,-1)
 
 
取り出さない場合は
=LET(s,HSTACK('E:\Office\Excel\[元データ.xlsx]1:10'!$B1:$B1000,'E:\Office\Excel\[元データ.xlsx]1:10'!$AD1:$AD1000),XLOOKUP(B2,CHOOSECOLS(s,$A$1),CHOOSECOLS(s,$A$1+COLUMNS(s)/2),0,0,-1))

投稿日時: 23/01/04 09:07:42
投稿者: yoshimitsu

皆様ご協力ありがとうございました。
まだ、上手く出来ていませんが、初めての関数を確認にながら構成してみます。
関数の組み合わせが勉強になって良かったです。
今後もよろしくお願いします。