
Excel VBA 表の作成
Excel VBAを活用して、複雑な表を作成・操作することで、業務効率を大幅に向上させることができます。以下に、より高度なテクニックや実践的な例を詳しく説明します。
1. 複雑な表の作成とデータ入力
複数のヘッダー行やセルの結合、罫線の設定など、複雑なレイアウトの表を作成するには、以下の手順を踏みます。
(1) ヘッダーの複数行対応
ヘッダー部分が複数行にわたる場合、各行ごとに値を設定します。
vba
Sub CreateComplexTable()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' 適宜シート名を変更してください
' ヘッダーの設定
ws.Range("B2").Value = "商品情報"
ws.Range("B3").Value = "商品名"
ws.Range("C3").Value = "カテゴリー"
ws.Range("D2:D3").Merge
ws.Range("D2").Value = "数量"
ws.Range("E2:E3").Merge
s.Range("E2").Value = "価格"
' ヘッダーの書式設定
With ws.Range("B2:E3")
.Font.Bold = True
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Borders.LineStyle = xlContinuous
End With
' データの入力
ws.Range("B4").Value = "りんご"
ws.Range("C4").Value = "果物"
ws.Range("D4").Value = 10
ws.Range("E4").Value = 100
ws.Range("B5").Value = "バナナ"
ws.Range("C5").Value = "果物"
ws.Range("D5").Value = 5
ws.Range("E5").Value = 150
ws.Range("B6").Value = "キャベツ"
ws.Range("C6").Value = "野菜"
ws.Range("D6").Value = 8
ws.Range("E6").Value = 120
' データ部分の書式設定
With ws.Range("B4:E6")
.Borders.LineStyle = xlContinuous
End With
End Sub
ポイント:
セルの結合:Mergeメソッドを使用して、ヘッダーのセルを結合しています。
罫線の設定:Borders.LineStyleプロパティで、セルの境界線を設定しています。
書式設定:Font.BoldやHorizontalAlignmentなどで、フォントや配置を調整しています。
2. データの動的入力とパフォーマンス向上
大量のデータを扱う場合、効率的なコードを書くことでパフォーマンスを向上させることができます。以下に、配列を使用してデータを一括で入力する方法を示します。
vba
Sub InsertDataEfficiently()
Dim ws As Worksheet
Dim data As Variant
Dim startCell As Range
Set ws = ThisWorkbook.Sheets("Sheet1") ' 適宜シート名を変更してください
Set startCell = ws.Range("B4") ' データの開始セル
' データを配列で定義
data = Array( _
Array("りんご", "果物", 10, 100), _
Array("バナナ", "果物", 5, 150), _
Array("キャベツ", "野菜", 8, 120) _
)
' 配列のデータを一括でセルに入力
Dim i As Long, j As Long
For i = LBound(data) To UBound(data)
For j = LBound(data(i)) To UBound(data(i))
startCell.Offset(i, j).Value = data(i)(j)
Next j
Next i
' データ部分の書式設定
With ws.Range(startCell, startCell.Offset(UBound(data), UBound(data(0))))
.Borders.LineStyle = xlContinuous
End With
End Sub
ポイント:
配列の使用:データを配列として定義し、ループを使用して一括でセルに入力することで、処理速度を向上させています。
Offsetメソッド:開始セルからの相対位置を指定して、データを入力しています。
3. ユーザー定義関数によるデータ処理
VBAでユーザー定義関数(UDF)を作成し、複雑なデータ処理を行うことができます。以下に、商品の価格と数量から合計金額を計算する関数を示します。
vba
Function CalculateTotalPrice(quantity As Integer, price As Double) As Double
CalculateTotalPrice = quantity * price
End Function
この関数をExcelのセル内で使用することで、各商品の合計金額を自動的に計算できます。
使用例:
セルF4に=CalculateTotalPrice(D4, E4)と入力すると、D4の数量とE4の価格を掛け合わせた結果が表示されます。
4. 複雑なデータの検索と抽出
複雑な条件でデータを検索・抽出する場合、VBAを活用すると効率的に処理できます。以下に、特定のカテゴリーの商品を抽出して別のシートに転記する例を示します。
vba
Sub ExtractCategoryData()
Dim sourceWs As Worksheet
Dim targetWs As Worksheet
Dim category As String
Dim lastRow As Long Dim i As Long
Dim targetRow As Long
Set sourceWs = ThisWorkbook.Sheets("Sheet1") ' データ元のシート
Set targetWs = ThisWorkbook.S
::contentReference[oaicite:0]{index=0}