- ベストアンサー
複数のシートから一覧表を作成する方法
次のことを実現させる方法を教えてください。 シート 「あ」「い」「う」があります。 ※例としてはシートを3つあげましたが、 このシートはどんどん数が増えていきます。 シート「あ」 A B 1 鈴木 1976/1/1 シート「い」 A B 1 佐藤 1977/1/1 シート「う」 A B 1 山田 1978/1/1 そこから一覧表を作成したいのです。 その一覧表のシート名を「一覧表」とします。 シート「一覧表」(実現したいシート内容) A B C 1 シート名 名前 生年月日 2 A 鈴木 1976/1/1 3 B 佐藤 1977/1/1 4 C 山田 1978/1/1 参照元のシートが固定されているなら A B C 1 シート名 名前 生年月日 2 あ あ!A1 あ!B1 3 い い!A1 い!B1 4 う う!A1 う!B1 と直接参照先を書けばいいのですが、 この方法では、シートが増えるたびに B列、C列にえ!A1 え!B1というように参照先を その都度書いていかなければいけません。 だから、一覧表で、シート名(A列)を入力ただけで、 自動的にそのシートに記載されている 名前と生年月日が反映されるようにしたいのです。 例えば今A3には「い」と記載されていますが、 これを「あ」と変更すると 以下のようにしたいのです。 B3のセルの中身は い!A1 → あ!A1 C3のセルの中身は い!B1 → あ!B1 一覧表のセルB列、C列にどのように記入すれば自動化できるでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一覧表のシートで、 B2に =IF(A2="","",INDIRECT(A2&"!A1")) C2に =IF(A2="","",INDIRECT(A2&"!B1")) として以下コピーとすれば良いと思います。 なお、シートが無いものをA列に記入するとエラー、空白の場合は空白となります。
その他の回答 (1)
- moon_piyo
- ベストアンサー率60% (88/146)
ご質問からすこしはずれますが、 '一覧表'から参照されるシートは同一ブック内の全てのシートを対象とする、 でよいのでしたら下記のvbaで'一覧表'に一覧ができそうです。 Sub 一覧作成() Dim i As Long Const ICHIRAN = "一覧表" i = 2 For Each Sh In Worksheets If Sh.Name <> ICHIRAN Then With Worksheets(ICHIRAN) .Range("A" & i).Value = Sh.Name .Range("B" & i).Formula = "=" & Sh.Name & "!A1" .Range("C" & i).Formula = "=" & Sh.Name & "!B1" End With i = i + 1 End If Next Worksheets(ICHIRAN).Range("A" & i, "C" & i).ClearContents End Sub
お礼
ご返答ありがとうございました。 VBAは未修得のため、勉強して試してみたいと思います。
お礼
ばっちり理想通りのものができました。 ありがとうございました。