Excel VBAでシート情報を一覧表に集約する方法:特定のセルの値を自動で抽出するコード

Office系ソフトウェア

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での作業を大幅に効率化することができます。

コメント

タイトルとURLをコピーしました