OfficeScripts テーブル操作まとめ|フィルター・ソート・コピーなど

OfficeScript(オフィススクリプト)でワークシート上のテーブルを操作する方法をまとめて紹介します。

テーブルの作成・解除からコピー、フィルター、並べ替え、スタイル変更などテーブル操作のスクリプトを解説します。

ドノ

スクリプト内のシート名・テーブル名・セル範囲・列名などは状況に応じて変更して使用してください。

目次

テーブルの作成・テーブル名の設定

まずはテーブルの作成とテーブル名の設定について紹介します。

そのままコピペで試せるようにシート名・セル範囲・テーブル名などには例となる値を入れていますので、状況に応じて変更して使ってください。

テーブル化 (テーブル名設定)

function main(workbook: ExcelScript.Workbook) {

    // 指定したシート名のワークシートを取得します
    const sheet = workbook.getWorksheet("Sheet1");   // 任意のシート名に変更してください(例: "Sheet1")

    // テーブル化したい範囲を指定します
    const range = sheet.getRange("A1:C4");          // 任意の範囲に変更してください(例: "A1:C4")

    // 指定した範囲をテーブル化します
    const table = sheet.addTable(range, true); // 第2引数 "true" は、範囲の最初の行をヘッダーとして使用することを意味します

    // テーブルの名前を設定します
    table.setName("MyTable");                  // 必要に応じてテーブル名を変更してください(例: "MyTable")
}

テーブル名の変更

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブル名を変更するテーブルを取得します
    const table = workbook.getTable('MyTable');       // 任意のテーブル名に変更してください(例: "MyTable")
    
    // 新しいテーブルの名前を設定します
    table.setName("NewTable");                   // 必要に応じてテーブル名を変更してください(例: "NewTable")
}

Sponsored link

テーブルの取得

次にテーブルの取得方法について紹介します。ブック内すべてのテーブル、シート内すべてのテーブル、テーブル名指定と3つの取得方法を紹介しています。

ドノ

スクリプト内のシート名・テーブル名・セル範囲・列名などは状況に応じて変更して使用してください。

すべてのテーブルを取得(ブック内)

function main(workbook: ExcelScript.Workbook) {

  // ブック内のすべてのテーブルを取得します
  const tables = workbook.getTables();
}

すべてのテーブルを取得(ワークシート内)

function main(workbook: ExcelScript.Workbook) {

  // シート名を指定してワークシートを取得します
  const sheet = workbook.getWorksheet("Sheet1");   // 任意のシート名に変更してください(例: "Sheet1")

  // シート内のすべてのテーブルを取得します
  const tables = sheet.getTables();
}

テーブル名指定でテーブルを取得

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');       // 任意のテーブル名に変更してください(例: "MyTable")
}

Sponsored link

テーブルの解除(範囲へ変換)

次にテーブルの解除方法について紹介します。ブック内すべてのテーブル、シート内すべてのテーブル、テーブル名指定と3つの解除方法を紹介しています。

ドノ

スクリプト内のシート名・テーブル名・セル範囲・列名などは状況に応じて変更して使用してください。

すべてのテーブルを解除(ブック内)

function main(workbook: ExcelScript.Workbook) {

// ブック上のすべてのテーブルを取得
const tables = workbook.getTables();

// 各テーブルを通常の範囲に変換
tables.forEach(table => {
table.convertToRange();
});
}

すべてのテーブルを解除(ワークシート内)

function main(workbook: ExcelScript.Workbook) {

// シートを取得
const sheet = workbook.getWorksheet("Sheet1");   // 任意のシート名に変更してください(例: "Sheet1")

// シート上のすべてのテーブルを取得
const tables = sheet.getTables();

// 各テーブルを通常の範囲に変換
tables.forEach(table => {
table.convertToRange();
});
}

テーブル名指定でテーブルを解除

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');   // 任意のテーブル名に変更してください(例: "MyTable")

    table.convertToRange();
}

Sponsored link

テーブルの削除

次にテーブルの削除方法について紹介します。ブック内すべてのテーブル、シート内すべてのテーブル、テーブル名指定と3つの削除方法を紹介しています。

ドノ

スクリプト内のシート名・テーブル名・セル範囲・列名などは状況に応じて変更して使用してください。

すべてのテーブルを削除(ブック内)

function main(workbook: ExcelScript.Workbook) {

// ブック上のすべてのテーブルを取得
const tables = workbook.getTables();

// 各テーブルを通常の範囲に変換
tables.forEach(table => {
table.delete();
});
}

すべてのテーブルを削除(ワークシート内)

function main(workbook: ExcelScript.Workbook) {

// シートを取得
const sheet = workbook.getWorksheet("Sheet1");   // 任意のシート名に変更してください(例: "Sheet1")

// シート上のすべてのテーブルを取得
const tables = sheet.getTables();

// 各テーブルを通常の範囲に変換
tables.forEach(table => {
table.delete();
});
}

テーブル名指定でテーブルを削除

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');   // 任意のテーブル名に変更してください(例: "MyTable")

    table.delete();
}

Sponsored link

テーブルの列追加・列削除

次にテーブルの列追加および列削除方法について紹介します。具体例として、列名ありで値は空の列追加の方法も載せてあります。

ドノ

スクリプト内のシート名・テーブル名・セル範囲・列名などは状況に応じて変更して使用してください。

列の追加

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');       // 任意のテーブル名に変更してください(例: "MyTable")

    // --- 列の追加 ---
    // 第1引数: 列の挿入位置(例: -1 または null は列の最後に追加)
    // 第2引数: 列のデータ
    // 第3引数: 列の名前
    table.addColumn(-1, ["NewColumn", "data1", "data2", "data3"],"NewColumn");
}

列の追加(列名指定、値は空)

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');       // 任意のテーブル名に変更してください(例: "MyTable")

    // --- 列の追加 ---
    table.addColumn(null,null,"NewColumn");
}

列の削除(列名指定)

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');       // 任意のテーブル名に変更してください(例: "MyTable")

    // 列名指定で列削除
    table.getColumnByName('Column1').delete();       // 任意の列名に変更してください(例: "Column1")
}

列の削除(列インデックス指定)

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');       // 任意のテーブル名に変更してください(例: "MyTable")

    // 列インデックス指定で列削除
    table.getColumnById(1).delete();        // 任意の列インデックスに変更してください(例: 1)
}

Sponsored link

テーブルの行追加・行削除

次にテーブルの行追加および行削除方法について紹介します。

ドノ

スクリプト内のシート名・テーブル名・セル範囲・列名などは状況に応じて変更して使用してください。

行の追加

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');       // 任意のテーブル名に変更してください(例: "MyTable")

    // --- 行の追加 ---
    // 第1引数: 行の挿入位置(例: -1 または null は行の最後に追加)
    // 第2引数: 行のデータ  ※省略した場合は空白行となります
    table.addRow(-1, ["data1", "data2", "data3"]);
}

行の追加(空白行)

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');       // 任意のテーブル名に変更してください(例: "MyTable")

    // --- 行の追加 ---
    // 第1引数: 行の挿入位置(例: -1 または null は行の最後に追加)
    // 第2引数: 行のデータ  ※省略した場合は空白行となります
    table.addRow();
}

行の削除(行インデックス指定)

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');  // 任意のテーブル名に変更してください(例: "MyTable")

    // --- 行の削除 ---
    // 第1引数: 行の削除位置(例:null または0 は一番上の行)
    // 第2引数: 削除する行数  ※省略した場合は1行となります
    table.deleteRowsAt(0,1);                   // 任意の行インデックスと行数に変更してください
}

Sponsored link

テーブルの重複削除

次にテーブルの重複削除方法について紹介します。

ドノ

スクリプト内のシート名・テーブル名・セル範囲・列名などは状況に応じて変更して使用してください。

重複の削除(列インデックス指定)

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');  // 任意のテーブル名に変更してください(例: "MyTable")

    // テーブルの範囲と行数を取得
    const tableRange = table.getRange();
    const tableRowCount = table.getRowCount() ;

    // 列インデックス指定で重複を削除
    const removedResults: ExcelScript.RemoveDuplicatesResult = tableRange.removeDuplicates([0]);  // 任意の列インデックスに変更してください(例: 0)
    const removeRowCount = removedResults.getRemoved();  //削除した行数を取得

    //削除した行数があれば、削除によりできた空白行をテーブルの下から削除する
    if (removeRowCount > 0){
      table.deleteRowsAt(tableRowCount - removeRowCount, removeRowCount);
    }
}

複数列の重複の削除(列インデックス指定)

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');  // 任意のテーブル名に変更してください(例: "MyTable")

    // テーブルの範囲と行数を取得
    const tableRange = table.getRange();
    const tableRowCount = table.getRowCount();

    // 複数列の列インデックス指定して重複を削除
    const removedResults: ExcelScript.RemoveDuplicatesResult = tableRange.removeDuplicates([0,1,2]);  // 任意の列インデックスに変更してください(例: 0,1,2)
    const removeRowCount = removedResults.getRemoved();  //削除した行数を取得

    //削除した行数があれば、削除によりできた空白行をテーブルの下から削除する
    if (removeRowCount > 0) {
        table.deleteRowsAt(tableRowCount - removeRowCount, removeRowCount);
    }
}

重複の削除(列名指定)

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');  // 任意のテーブル名に変更してください(例: "MyTable")

    // テーブルの範囲と行数を取得
    const tableRange = table.getRange();
    const tableRowCount = table.getRowCount() ;

    // 列名から列のインデックスを取得する
    const columnIndex = table.getColumnByName('Column1').getIndex();  // 任意の列名に変更してください(例: "Column1")

    // 列インデックス指定で重複を削除
    const removedResults: ExcelScript.RemoveDuplicatesResult = tableRange.removeDuplicates([columnIndex]);  // 任意の列インデックスに変更してください(例: 0)
    const removeRowCount = removedResults.getRemoved();  //削除した行数を取得

    //削除した行数があれば、削除によりできた空白行をテーブルの下から削除する
    if (removeRowCount > 0){
      table.deleteRowsAt(tableRowCount - removeRowCount, removeRowCount);
    }
}

Sponsored link

フィルターの操作と解除

次にテーブルのフィルター方法について紹介します。

ドノ

スクリプト内のシート名・テーブル名・セル範囲・列名などは状況に応じて変更して使用してください。

指定列でフィルター設定(単一値)

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');  // 任意のテーブル名に変更してください(例: "MyTable")

    // 列名指定で列を取得
    const column = table.getColumnByName("Column1");  // 任意の列名に変更してください(例: "Column1")

    // フィルターする値を設定
    const filterCriteria: string[] = ["data1"];  // 任意の値に変更してください(例: "data1")

    // 列にフィルターを適用
    column.getFilter().applyValuesFilter(filterCriteria);
}

日付列をフィルターする

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');  // 任意のテーブル名に変更してください(例: "MyTable")

    // 列名指定で列を取得
    const column = table.getColumnByName("Column1");  // 任意の列名に変更してください(例: "Column1")

    // 日付のフィルターコンテキストを定義
    const filterCriteria: ExcelScript.FilterDatetime = {
        date: "2024-04-01",                        // 任意の日付に変更してください(例: "2024-04-01")
        specificity: ExcelScript.FilterDatetimeSpecificity.day
    };

    // 列にフィルターを適用
    column.getFilter().applyValuesFilter([filterCriteria]);
}

指定列でフィルター設定(以上&以下)

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');  // 任意のテーブル名に変更してください(例: "MyTable")

    // 列名指定で列を取得
    const column = table.getColumnByName("Column1");  // 任意の列名に変更してください(例: "Column1")

    // フィルター条件を設定します(0以上)
    const filterCriteria: ExcelScript.FilterCriteria = {
        criterion1: ">=0",                      // 任意の条件に変更してください(例: ">=0")
        filterOn: ExcelScript.FilterOn.custom
    };

    // 列にフィルターを適用
    column.getFilter().apply(filterCriteria);
}

すべてのフィルターの解除

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');  // 任意のテーブル名に変更してください(例: "MyTable")

    // すべてのフィルターを解除
    table.clearFilters()
}

指定列のフィルターの解除

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable('MyTable');  // 任意のテーブル名に変更してください(例: "MyTable")

    // 列名指定で列を取得
    const column = table.getColumnByName("Column1");  // 任意の列名に変更してください(例: "Column1")

    // 列にフィルターを解除
    column.getFilter().clear();
}

Sponsored link

並べ替え(ソート)の設定

次にテーブルのソート方法について紹介します。複数列での並べ替えでは2列の例を載せていますが、3列4列の並べ替えも同様のスクリプトを追加することで可能です。

ドノ

スクリプト内のシート名・テーブル名・セル範囲・列名などは状況に応じて変更して使用してください。

指定列で並べ替え(昇順&降順)

function main(workbook: ExcelScript.Workbook) {
    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable("MyTable"); // 任意のテーブル名に変更してください(例: "MyTable")

    // 列名から列のインデックスを取得する
    const columnIndex = table.getColumnByName('Column1').getIndex();  // 任意の列名に変更してください(例: "Column1")

    // 並べ替え条件を設定します
    const sortFields: ExcelScript.SortField[] = [{
        key: columnIndex, // 並べ替えの基準となる列インデックス
        ascending: true   // 昇順に並べ替え(降順の場合は false)
    }];

    // テーブル全体を並べ替えます
    table.getRangeBetweenHeaderAndTotal().getSort().apply(sortFields);
}

複数列で並べ替え

function main(workbook: ExcelScript.Workbook) {

    // テーブル名を指定してテーブルを取得します
    const table = workbook.getTable("MyTable"); // 任意のテーブル名に変更してください(例: "MyTable")

    // 列名から列のインデックスを取得する
    const columnIndex1 = table.getColumnByName('Column1').getIndex();  // 任意の列名に変更してください(例: "Column1")
    const columnIndex2 = table.getColumnByName('Column2').getIndex();  // 任意の列名に変更してください(例: "Column2")

    // 複数の並べ替え条件を設定します
    const sortFields: ExcelScript.SortField[] = [
        {
            // 1つ目の列を並べ替え
            key: columnIndex1,
            ascending: true  // 昇順に並べ替え(降順の場合は false)
        },
        {
            // 2つ目の列を並べ替え
            key: columnIndex2,
            ascending: false  // 降順に並べ替え(昇順の場合は true)
        }
    ];

    // テーブル全体を並べ替えます
    table.getRangeBetweenHeaderAndTotal().getSort().apply(sortFields);
}

Sponsored link

テーブルのコピー&ペースト

最後にテーブルをコピーして別の場所に貼り付ける方法を紹介します。

ドノ

スクリプト内のシート名・テーブル名・セル範囲・列名などは状況に応じて変更して使用してください。

function main(workbook: ExcelScript.Workbook) {
    
    // コピー元のテーブルの情報を取得
    const table = workbook.getTable("MyTable"); // 任意のテーブル名に変更してください(例: "MyTable")
    const sourceRange = table.getRange();
    const sourceValues = sourceRange.getValues();
    
    // コピー先の場所を指定
    const destinationSheet = workbook.getWorksheet("Sheet2"); // コピー先のシート名を指定してください
    const destinationCell = destinationSheet.getRange("A1"); // コピー先の開始セルを指定してください
    const destinationRange = destinationCell.getResizedRange(
        sourceRange.getRowCount() - 1,
        sourceRange.getColumnCount() - 1
    )

    // コピー先にデータをペースト
    destinationRange.setValues(sourceValues);

    //コピー先をテーブル化
    const destinationtable = destinationSheet.addTable(destinationRange, true); 
}
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

仕事、お金、旅行のことなどメモしてます。
仕事ではTableauを勉強中!
初心者にもわかりやすいように学んだことを発信していきます。

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次