スプレッドシートのデータを特定の形式でグループ化して整理する方法を紹介します。この例では、入力データを基に「シート番号」と「地域名」でグループ化し、句読点区切りで結合した結果を別の列に出力します。
前提条件
-
入力データは「加工1」シートの B列(シート番号), C列(地域名), D列(加支店名) にあるものとします。
-
出力結果は同じシートの F列(シート番号), G列(地域名), H列(加工結果) に書き込みます
GASコード
以下のコードをGoogle Apps Scriptにコピーして実行します。
function groupData() {
// スプレッドシートとシートを取得
const sheetName = "加工1";
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName(sheetName);
// 入力データを取得(B~D列)
const range = sheet.getRange(2, 2, sheet.getLastRow() - 1, 3); // データ範囲(ヘッダーを除く)
const data = range.getValues();
// データをグループ化
const groupedData = {};
data.forEach(row => {
const key = `${row[0]}_${row[1]}`; // シート番号_地域名をキーとする
if (!groupedData[key]) {
groupedData[key] = [row[0], row[1], []]; // [シート番号, 地域名, 支店名の配列]
}
groupedData[key][2].push(row[2]); // 支店名を配列に追加
});
// 出力データを整形
const output = Object.values(groupedData).map(group => [
group[0], // シート番号
group[1], // 地域名
group[2].join("、") // 加工結果をタブ区切りで結合
]);
// 出力データを書き込み(F~H列)
const outputRange = sheet.getRange(2, 6, output.length, 3); // F~H列の範囲(ヘッダーを除く)
outputRange.setValues(output);
// 終了メッセージ
SpreadsheetApp.getUi().alert("データのグループ化が完了しました。");
}
実行手順
-
スプレッドシートを準備
-
「加工1」シートに以下のようなデータを用意します:
-
B列 (シート番号) | C列 (地域名) | D列 (支店名) |
---|---|---|
3 | 東北地方 | 山形 |
3 | 東北地方 | 宮城 |
-
Apps Script を開く
-
コードを貼り付け
-
上記のコードをコピーしてスクリプトエディタに貼り付けます。
-
-
スクリプトを実行
-
スクリプトエディタ上部の「関数を選択」ドロップダウンから
groupData
を選択して実行します。 -
実行中に「権限を許可」するよう求められた場合は、指示に従って許可してください。
-
-
結果を確認
-
「加工1」シートの F列(シート番号), G列(地域名), H列(加工結果) に結果が出力されます。
-
出力例
F列 (シート番号) | G列 (地域名) | H列 (加工結果) |
3 | 東北地方 | 山形、宮城 |
補足
-
このコードは簡単なデータ構造を前提としており、大量データや複雑な条件には追加の最適化が必要になる場合があります。
-
区切り文字以外のフォーマット(例えば改行)で出力したい場合は、
join("、")
の部分を変更してください。
以上でデータ加工・グループ化の手順は完了です。