Excel VBAを使って、複数のシートから特定の情報を自動で集約する方法は非常に便利です。特に、各シートの特定のセルの値を一覧表としてまとめたい場合、少し工夫が必要です。この記事では、シート名を一覧にするだけでなく、各シートの特定のセル(例えばB5やC16など)の値を集約する方法について解説します。
1. 基本のシート名をA列に入力するコード
まずは、すべてのシートの名前を「一覧表」のA列に入力する基本的なコードを確認します。以下のコードでは、すべてのシートの名前をA列に入力する方法を示しています。
Sub 一覧表()
'■データの入力位置
Dim n
n = 1
'■すべてのシートの名前を取得し、A列に入力
Dim w
For Each w In Worksheets
Range("a" & n).Value = w.Name
n = n + 1
Next
End Sub
このコードは、すべてのシートを順番に処理し、そのシート名を「一覧表」のA列に表示します。
2. シート名に連動して特定のセルの値を集約する方法
次に、シート名に連動して、各シートの特定のセル(例えば、B5やC16)の値を取得して一覧表に表示する方法について説明します。
ここでは、各シートからB5セルとC16セルの値を取得し、それをB列とC列に入力するコードを紹介します。
Sub 一覧表()
'■データの入力位置
Dim n
n = 1
'■すべてのシートの名前を取得し、A列に入力
Dim w
For Each w In Worksheets
Range("a" & n).Value = w.Name
'■各シートのB5とC16の値をB列、C列に入力
Range("b" & n).Value = w.Range("B5").Value
Range("c" & n).Value = w.Range("C16").Value
n = n + 1
Next
End Sub
このコードは、各シートのB5セルとC16セルの内容を順番にB列とC列に入力します。シート名がA列に表示され、その横に対応するセルの値がB列とC列に表示されることになります。
3. 複数のセルを一度に取得する方法
もし複数のセルの情報を一度に集約したい場合、VBAの「Range」を使ってセル範囲を指定することもできます。例えば、特定の範囲(例えばB5:C10)の値を一度に集約する方法もあります。
以下は、シートのB5からC10の範囲をB列からD列にコピーするコード例です。
Sub 一覧表()
'■データの入力位置
Dim n
n = 1
'■すべてのシートの名前を取得し、A列に入力
Dim w
For Each w In Worksheets
Range("a" & n).Value = w.Name
'■B5からC10までのセル範囲を集約
w.Range("B5:C10").Copy Destination:=Range("b" & n)
n = n + 1
Next
End Sub
このコードは、各シートのB5:C10の範囲を「一覧表」のB列からD列にコピーする方法です。セル範囲を一度にコピーすることで、より多くのデータを効率的に集約できます。
4. エラー処理を追加する
実際の使用においては、エラーが発生することがあります。例えば、特定のシートにB5やC16セルが空である場合などです。このような場合、エラー処理を加えるとより安全にコードを実行できます。
以下のように、エラーが発生した場合にメッセージを表示するコードを追加してみましょう。
Sub 一覧表()
'■データの入力位置
Dim n
n = 1
'■すべてのシートの名前を取得し、A列に入力
Dim w
For Each w In Worksheets
Range("a" & n).Value = w.Name
'■エラー処理
On Error Resume Next
Range("b" & n).Value = w.Range("B5").Value
Range("c" & n).Value = w.Range("C16").Value
If Err.Number <> 0 Then
Range("b" & n).Value = "エラー"
Range("c" & n).Value = "エラー"
Err.Clear
End If
On Error GoTo 0
n = n + 1
Next
End Sub
このコードでは、B5やC16のセルが空であったりエラーが発生した場合に、エラーメッセージ「エラー」を表示します。
5. まとめ
Excel VBAを使って複数のシートからデータを集約する方法は、非常に効率的で便利です。シート名の一覧を作成する基本的な方法から、特定のセルの値を集約する方法、さらには複数のセルを一度に集約する方法、エラー処理を加えたコードまでをご紹介しました。これらのテクニックを駆使することで、Excel VBAでの作業を大幅に効率化することができます。
コメント