下図のようなテーブルを作成します。
Dim wb = new XLWorkbook Dim ws = wb.Worksheets.Add("顔文字") 'テーブルを作成 Dim dataList = New List(Of String()) dataList.Add(New String() {"平静", "スマイル", "狼狽", "哀しみ", "怒り"}) dataList.Add(New String() {"(*´ω`*)", "(*^_^*)", "(;^ω^)", "( ;∀;)", "(# ゚Д゚)"}) dataList.Add(New String() {"(・_・)", "(*^▽^*)", "(~_~;)", "(T_T)", "(; ・`д・´)"}) ws.Cell("B2").Value = dataList 'シートにデータを挿入 'シート上のデータ範囲を取得 Dim range = ws.Range(ws.FirstCellUsed, ws.LastCellUsed) '取得したデータ範囲をテーブルとして自動的に装飾して IXLTable を返す。 Dim orgTable = range.CreateTable 'テーブル名(名前付き範囲)は "Table1" になる。 'シート上にテーブルを作成したくない場合は range.AsTable を使用して 'テーブルとして範囲を操作することもできます。 '2つ目のテーブルを作成し、最初のテーブルのヘッダーを全てコピーする Dim SecondTblStartColNum As Int32 = orgTable.LastColumn.ColumnNumber + 2 Dim currentRow As Int32 = orgTable.FirstCell.WorksheetRow.RowNumber Dim secondTblTitle As String = "ヘッダ一覧" ws.Cell(currentRow, SecondTblStartColNum).Value = secondTblTitle For Each cell In orgTable.HeadersRow.Cells currentRow += 1 ws.Cell(currentRow, SecondTblStartColNum).Value = cell.Value Next Dim secondTblFirstCell = ws.Cell(orgTable.FirstCell.WorksheetRow.RowNumber, SecondTblStartColNum) Dim secondTblLastCell = ws.Cell(currentRow, SecondTblStartColNum) 'テーブルを作成して IXLTable を取得。 'テーブル名(名前付き範囲)は "ヘッダデータ" になる。 Dim secondTable = ws.Range(secondTblFirstCell, secondTblLastCell).CreateTable("ヘッダデータ") 'テーブルのデザインを変える secondTable.Theme = XLTableTheme.TableStyleLight10 '列タイトルにオートフィルターは付けない secondTable.ShowAutoFilter = False '2つ目のテーブルにカスタムの式を追加 secondTable.ShowTotalsRow = True secondTable.Field(0).TotalsRowFormulaA1 = "CONCATENATE(""合計:"", CountA([" & secondTblTitle & "]))" '3つ目のテーブルを作成し、最初のテーブルの顔文字の一部をコピーする Dim ThirdTblStartColNum As Int32 = SecondTblStartColNum + 2 currentRow = orgTable.RangeAddress.FirstAddress.RowNumber 'currentRow をリセット ws.Cell(currentRow, ThirdTblStartColNum).Value = "平静&スマイル" For Each row In orgTable.DataRange.Rows currentRow += 1 Dim kao1 = row.Field("平静").GetString 'フィールド名を使ってセルにアクセス Dim kao2 = row.Field("スマイル").GetString 'フィールド名を使ってセルにアクセス Dim kaokao = String.Format("{0} {1}", kao1, kao2) ws.Cell(currentRow, ThirdTblStartColNum).Value = kaokao Next Dim ThirdTblFirstCell = ws.Cell(orgTable.RangeAddress.FirstAddress.RowNumber, ThirdTblStartColNum) Dim ThirdTblLastCell = ws.Cell(currentRow, ThirdTblStartColNum) 'テーブルを作成して IXLTable を取得。 'テーブル名(名前付き範囲)は "Table2" になる。 Dim thirdTable = ws.Range(ThirdTblFirstCell, ThirdTblLastCell).CreateTable 'テーブルのデザインを変える thirdTable.Theme = XLTableTheme.TableStyleLight12 '列タイトルにオートフィルターは付けない thirdTable.ShowAutoFilter = False 'コンテンツに合わせて列幅を調整 'コンテンツが日本語の場合は日本語フォントにしておかないと AdjustToContents が正しく動作しない ws.Style.Font.FontName = "游ゴシック"; ws.Columns.AdjustToContents '複数の列幅を設定 ws.Columns("A,G,I").Width = 3 wb.SaveAs("C:\test\KaoTables.xlsx")