こんにちは。maruru01です。
シート名リスト(Sheet1は除く)をSheet1のC列に入れておくとします。
まず、メニューの[挿入]→[名前]→[定義]で、
[名前]:適当な名前(仮に「シート名一覧」とする)
[参照範囲]:「=REPLACE(GET.WORKBOOK(1)&LEFT(NOW(),0),1,FIND("]",GET.WORKBOOK(1)&LEFT(NOW(),0)),)」
と名前を定義します。
次に、C1に、
=INDEX(シート名一覧,ROW(C2))
と入力して、下の行へコピーします。
これ以上はシートは増やさない、という予想最大シート数分コピーして下さい。
シートが存在しない場合は、
「#REF!」
と表示されますが、無視して下さい。
(なんなら、このC列を非表示にしておいても構いません。)
そうしたら、A1の入力規則で、
[入力値の種類]:「リスト」
[元の値]:「=OFFSET($C$1,,,COLUMNS(シート名一覧)-1)」
と設定します。
これで、A1でSheet1以外のシートを選択出来るようになります。
シートを挿入したり、削除したりしても選択リストに反映されます。
そして、B1に、
=IF(LEN(INDIRECT("'"&$A$1&"'!B"&ROW())),INDIRECT("'"&$A$1&"'!B"&ROW()),"")
と入力して、下の行へコピーします。
これも十分な行までコピーしておきます。
(あまり行数が多いと、重くなりますが。)
お礼
とても上手く行きました。 大変使いやすい表ができたと思います。 有難うございました。