注意
元記事(2018年4月25日付)には下記のように書かれています。by エレン・イースト(当サイトの管理人)
ピボットテーブルのサポートはまだかなり実験的な段階です。
Pivot table support is still very experimental.
月ごとの菓子パンの売り上げをピボットテーブルにしてみます。
まず、菓子パン (Pastry) クラスを作成します。
Public Class Pastry 'プロパティ名がテーブルの列タイトルに使われる Public Property 名称 As String Public Property 注文数 As Integer Public Property 月 As String Public Sub New(name As String, amount As Integer, month As Integer) Me.名称 = name Me.月 = month & "月" Me.注文数 = amount End Sub End Class
次に Pastry クラスを使用して売り上げデータのリストを作成します。
Dim pastries = New List(Of Pastry) From { New Pastry("クロワッサン", 150, 4), New Pastry("クロワッサン", 250, 5), New Pastry("クロワッサン", 134, 6), New Pastry("ドーナツ", 250, 4), New Pastry("ドーナツ", 225, 5), New Pastry("ドーナツ", 210, 6), New Pastry("ベアクロウ", 134, 4), New Pastry("ベアクロウ", 184, 5), New Pastry("ベアクロウ", 124, 6), New Pastry("デニッシュ", 394, 4), New Pastry("デニッシュ", 190, 5), New Pastry("デニッシュ", 221, 6), New Pastry("スコーン", 135, 4), New Pastry("スコーン", 122, 5), New Pastry("スコーン", 243, 6) }
作成したリストをテーブルとして新規ワークシートに挿入します。
Dim workbook = New XLWorkbook Dim sheet = workbook.Worksheets.Add("菓子パンの売り上げデータ") '「菓子パンの売り上げデータ」シートの Cel(1, 1) に菓子パンデータのリストを挿入 Dim table = sheet.Cell(1, 1).InsertTable(pastries, "菓子パンの売り上げデータ", True) '列幅 'sheet.Columns.AdjustToContents 'コンテンツが日本語の場合は日本語フォントにしておかないと正しく動作しない sheet.Column(1).Width = 15.5 sheet.Column(2).Width = 10 sheet.Column(3).Width = 7 '「月」の列を右寄せ(タイトル行以外) sheet.Range(sheet.Cell(2, 3), sheet.Column(3).LastCellUsed) _ .Style.Alignment.Horizontal=XLAlignmentHorizontalValues.Right
最後に、そのテーブルのデータをソースとして、ピボットテーブルを作成します。
'ピボットテーブル用の新規シートを追加 Dim ptSheet = workbook.Worksheets.Add("ピボットテーブル") '「菓子パンの売り上げデータ」テーブルのデータを使用してピボットテーブルを作成する Dim pt = ptSheet.PivotTables.AddNew("ピボットテーブル", ptSheet.Cell(1, 1), table.AsRange) 'ピボットテーブルの行見出しが菓子パンの名称になります pt.RowLabels.Add("名称") 'プロパティ名と異なるとエラー 'ピボットテーブルの列見出しが月になります pt.ColumnLabels.Add("月") 'プロパティ名と異なるとエラー '注文数フィールドの値がテーブルの中身の値になります。 '各行と列の合計がデフォルトの計算方法です pt.Values.Add("注文数") 'ププロパティ名と異なるとエラー '列幅 'ptSheet.Columns.AdjustToContents 'コンテンツが日本語の場合は日本語フォントにしておかないと正しく動作しない ptSheet.Column(1).Width = 15.5 ptSheet.Column(2).Width = 15.5 ptSheet.Column(3).Width = 7 ptSheet.Column(4).Width = 7 ptSheet.Column(5).Width = 7 workbook.SaveAs("D:\test\pivotTable.xlsx")
下図のようなデータテーブルとピボットテーブルが作成されます。