1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GASでピボットテーブルを作る

Last updated at Posted at 2022-02-05

ピボットテーブルを操作するためのメモ。
こちらの記事を参考にさせていただきました。

###集計元データ
こんな感じのデータを元にピボットテーブルを作る。

###シート名

データが入ってるシートの名前 → data
ピボットテーブルを作るシートの名前 → pivot

###コードの全体像

sample.gs
function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const dataSheet = ss.getSheetByName('data');
  const pivotSheet = ss.getSheetByName('pivot');
  const dataSource = dataSheet.getDataRange();
  // ピボットテーブルの作成
  const pivotTable = pivotSheet.getRange('A1').createPivotTable(dataSource);
  
  // 行の設定
  let itemGroup = pivotTable.addRowGroup(1);
  itemGroup.showTotals(true).sortAscending;
  itemGroup.showRepeatedLabels();
  itemGroup = pivotTable.addRowGroup(2);
  itemGroup.showTotals(false).sortAscending;
  
  // 列の設定
  itemGroup = pivotTable.addColumnGroup(3);

  // 値の設定
  let pivotValue = pivotTable.addPivotValue(4, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
  pivotValue.setDisplayName('売上金額');
  pivotValue = pivotTable.addPivotValue(1, SpreadsheetApp.PivotTableSummarizeFunction.COUNTA);
  pivotValue.setDisplayName('売上件数');
}

###1.ピボットテーブルを作成する
該当コード部分

sample.gs
function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const dataSheet = ss.getSheetByName('data');
  const pivotSheet = ss.getSheetByName('pivot');
  const dataSource = dataSheet.getDataRange();
  // ピボットテーブルの作成
  const pivotTable = pivotSheet.getRange('A1').createPivotTable(dataSource);
}

こんな感じで作成される。
画面収録-2022-01-27-18.57.44.gif

###2.行の設定
該当コード部分

sample.gs
  // 行の設定
  let itemGroup = pivotTable.addRowGroup(1); //addRowGroupの引数はdataシートの年が格納されている列数。
  itemGroup.showTotals(true).sortAscending;
  itemGroup.showRepeatedLabels();
  itemGroup = pivotTable.addRowGroup(2); //addRowGroupの引数はdataシートの月が格納されている列数。
  itemGroup.showTotals(false).sortAscending;

こんな感じで設定される。
wiv13-44nrk.gif
年の行は showRepeatedLabels() で「行ラベルを繰り返す」にチェックをいれている。
月の行は showTotals() の引数をfalseにすることで統計を非表示にしている。

###3.列の設定
該当コード部分

sample.gs
  // 列の設定
  itemGroup = pivotTable.addColumnGroup(3); //addRowGroupの引数はdataシートの拠点が格納されている列数。
}

画面収録-2022-01-27-18.59.23.gif

###4.値の設定
該当のコード部分

sample.gs
  // 値の設定
  let pivotValue = pivotTable.addPivotValue(4, SpreadsheetApp.PivotTableSummarizeFunction.SUM);
  pivotValue.setDisplayName('売上金額');
  pivotValue = pivotTable.addPivotValue(1, SpreadsheetApp.PivotTableSummarizeFunction.COUNTA);
  pivotValue.setDisplayName('売上件数');
}

最初から最後まで実行するとこんな感じで出来上がる
0lsh8-7qbak.gif

addPivotValue() の第1引数はdataシートの列数を指定して、第2引数はどういう集計方法するかをしている。
集計方法は公式サイトに一覧があります。
このコードでは売上金額に関してはSUMで、売上件数にCOUNTAで集計。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?