PR

スプレッドシートで特定の文字を含む行を別シートに自動コピーする方法【QUERY関数/GAS】

スプレッドシートで特定の文字を含む行を別シートに自動コピーする方法【QUERY関数/GAS】 GAS
記事内に広告が含まれています。

Googleスプレッドシートで、特定の文字を含む行を自動的に抽出し、別のシートにコピーする方法をご紹介します。

QUERY関数やGASを活用することで、手動でのコピペ作業を大幅に削減できます。

QUERY関数を使用する方法

QUERY関数の基本構文

Googleスプレッドシートでは、QUERY関数を利用して特定の文字列を含む行を抽出できます。

この関数はSQLに似た構文で、データのフィルタリングや整理を簡単に行うことができます。

=QUERY(範囲, "SELECT * WHERE 列 contains '特定の文字'")
  • 範囲: データが存在する範囲(例: A2:C11)
  • : 検索する列(例: B)
  • 特定の文字: 抽出したい文字列(例: “モバイル”)


例えば、シート1のA2:C11のデータ範囲で、B列に「モバイル」を含む行を抽出するには以下のようにします:

=QUERY('シート1'!A2:C11, "SELECT * WHERE B contains 'モバイル'")

この式を新しいシートに入力すると、B列に「モバイル」を含む行のみが表示されます。

スプレッドシート内での設定手順

1.Google スプレッドシートを開く

まずは、Google スプレッドシートを開きます。

Google Chromeを開いて右上に表示されるGoogle アプリのアイコンを左クリックします。

そして、Google アプリ一覧から「スプレッドシート」を選択します。

編集したいスプレッドシートを選択して開きます。

2. 新しいシートを作成する

次に、抽出結果を表示させるために新しいシートを作成します。

画面左下の「シートを追加」ボタンを左クリックし、作成されたシートを任意の名前に変更します。

3. QUERY関数を入力する

続いて、新しいシートの任意のセルにQUERY関数を入力します。

今回のサンプルでは、B列に「モバイル」を含む行のみを抽出するために、下記のQUERY関数を「シート2」のA1セルに入力します。

=QUERY('シート1'!A2:C11, "SELECT * WHERE B contains 'モバイル'")
4. QUERY関数の結果を確認する

以上で、特定の文字を含む行を自動的に抽出し、新しいシートに表示することができます。

QUERY関数の自動更新機能

QUERY関数は動的にデータを更新します。

元データが変更された場合、自動的に結果が更新されるため、常に最新の情報を表示することができます。

応用例

  • 複数の条件でフィルタリングしたい場合は、OR演算子やAND演算子を使用できます。
=QUERY('シート1'!A2:C11, "SELECT * WHERE B CONTAINS 'モバイル' OR B CONTAINS 'フォン'")
  • 特定のワード以外を抽出したい場合は、not contains演算子を使用します。
=QUERY('シート1'!A2:C11, "SELECT * WHERE NOT B CONTAINS 'モバイル'")

GASを使用して自動抽出する方法

Google Apps Script (GAS) を使って、特定の文字を含む行をスプレッドシートから別のシートに自動的にコピーする方法も紹介します。

GASを使用すると、QUERY関数では処理しきれない大量のデータの処理や、より複雑な条件の処理を実装することができます。

GASでの設定手順

1.スクリプトエディタを開く

メニューバーの「拡張機能」を左クリックし、「Apps Script」を選択します。

「Apps Script」を選択すると、スクリプトエディタが新しいタブで開きます。

2. スクリプトを作成する

Apps Scriptエディタが開いたら、以下のスクリプトをコピーして貼り付けし、プロジェクトを保存します。

このコードは、特定のキーワードを含む行を元のシートから検索し、それらの行を新しいシートにコピーします。

function copyRowsToNewSheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sourceSheet = ss.getSheetByName("元のシート名"); // 元のシート名をここに入力
  var targetSheetName = "コピー後のシート名"; // 新しいシートの名前
  var targetSheet = ss.getSheetByName(targetSheetName);

  // 対象のシートが存在しない場合は新しく作成
  if (!targetSheet) {
    targetSheet = ss.insertSheet(targetSheetName);
  } else {
    // シートが既に存在する場合は内容をクリア
    targetSheet.clear();
  }

  var data = sourceSheet.getDataRange().getValues(); // 元のシートのデータを全て取得
  var newData = [];

  for (var i = 0; i < data.length; i++) {
    if (data[i].join().indexOf("特定条件") !== -1) { // 行内に"特定条件"が含まれているかチェック
      newData.push(data[i]); // 条件にマッチした行を新しい配列に追加
    }
  }

  // 新しいデータがあれば新しいシートに書き込む
  if (newData.length > 0) {
    targetSheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
  }
}
3.キーワードを設定する

スクリプト内3行目の var sourceSheet = ss.getSheetByName("元のシート名");

スクリプト内4行目のvar targetSheetName = “コピー後のシート名”;

スクリプト内19行目のindexOf(“特定条件”)

のそれぞれの文字列に、自分が指定したいシート名と単語を指定します。

4.スクリプトを実行する

スクリプトエディターのメニューバーで「copyRowsToNewSheet」が選択されていることを確認し、画面上部の「実行」ボタンを左クリックします。

copyRowsToNewSheetの実行ボタンをクリック

初めて実行する際には、スクリプトに対する権限の承認が求められる場合がありますので、承認してください。

「このアプリは Google で確認されていません」と表示された場合は左下の詳細をクリックすると、「無題のプロジェクト(安全ではないページ)に移動」というリンクが表示されます。
このリンクをクリックすると次のページへ遷移できます。

5.実行結果を確認する

スクリプトが正常に実行されると、指定したシートに指定した文字を含む行が抽出されていることが確認できます。

GASでの定期実行設定(オプション)

GASではトリガー機能を使ってスクリプトを定期的に実行することも可能です。

例えば、毎日特定の時間に自動的にデータ抽出処理を行う設定ができます。

トリガー設定

GASエディタ左側の「トリガー」メニューから「トリガーを追加」を選び、実行タイミングや頻度などを設定します。

これにより、指定した日時にスクリプトが自動的に実行されるようになります。

まとめ

以上の方法で、スプレッドシート内で特定条件にマッチするデータ行のみを効率よく管理することができます。

業務効率化やデータ整理をする際に、ぜひ活用してください!


Google Apps Script(GAS)で指定の列から特定の単語の行を削除する自動化に興味がある方は、ぜひこちらもご覧ください!

コメント

タイトルとURLをコピーしました