- ベストアンサー
EXCEL2003
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>かなりのシート数があるので、 『かなり』なシートが1つのBookにあるのでしょうか? また、注文書1枚につき一覧表1行にデータを集約するのでしょうか? そうだと仮定した場合の一案ですが。 まず一覧表のA列にシート名を入力します。 A2,A3...とタテに入力。 1行目を項目行として、2行目から一覧表にするとします。 B2セルには =INDIRECT("'"&$A2&"'!A3") 以下 C2 =INDIRECT("'"&$A2&"'!C4") D2 =INDIRECT("'"&$A2&"'!K1") E2 =INDIRECT("'"&$A2&"'!C16") F2 =INDIRECT("'"&$A2&"'!G16") : INDIRECT関数を使って、シート名を参照しながら一覧表にしたいセルアドレスを記述します。 参照数式を1行だけ作成すれば、あとは必要なデータ数を下にコピーします。 その後[コピー]-[形式を選択して貼り付け]-[値]で。 シート名の入力が面倒なら、左端にシートを追加してシート名を書き出すマクロなど。 Sub test() Dim i As Long With Worksheets.Add(before:=Worksheets(1)) For i = 2 To Worksheets.Count .Cells(i, 1).Value = Worksheets(i).Name Next End With End Sub 余談ですけど、今後は 「カード形式で入力」→「一覧表形式で保存。」 よりも 「一覧表形式で入力」→「カード形式で印刷。」(INDEX(MATCH関数などで必要なデータを引っ張ってくる) のほうがラクでしょうね。 ただ、「カード形式で入力」→「一覧表形式で保存」の部分をマクロ化するなら入力し易くなるのかな。 例えば、"入力用"シートの1行目を印刷範囲外にして、 A1 =A3 B1 =C4 : などと必要データを参照させておけば Sub test2() With Sheets("一覧表") .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, 15).Value _ = Sheets("入力用").Range("A1:O1").Value End With End Sub この程度のマクロで、実行ごとに"入力用"シートから"一覧表"シートの最下行にデータを蓄積していきます。
補足
質問文がわかりづらくてすみません・・・! end-uさんが書いているとおり、 1つのbookにSheetが60ぐらいあり、同じようなbookが5つあります。 >注文書1枚につき一覧表1行にデータを集約するのでしょうか? そうです。 細かく教えていただきありがとうございます。 上記を参考にして試してみます。