例文を使って繰り返し業務を時短

【GAS】縦(行)ループしてマッチしたデータを別シートへ転記する

【GAS】縦(行)ループしてマッチしたデータを別シートへ転記 GAS

特定のキーワードを含む行を検索し、別のシートにコピーする

Google Sheetsのアクティブなシート内の特定のキーワードを含む行を検索し、別のシートにコピーするスクリプトです。

function 特定の文字を含むデータを行ごとコピーして転記() {

  // シートを定義する
  var wh1 = SpreadsheetApp.getActiveSheet();
  var wh2 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[1];
  
  // 検索キーワードを設定する
  var SearchWord = "東京";
  
  // 出力する行の開始位置
  var J = 2;
  
  // 最終行を取得する
  var LastRow = wh1.getLastRow();
  
  // 各行に対して処理を行う
  for (var i = 2; i <= LastRow; i++) {
  
    // 特定のキーワードを含む行の場合に処理を実行する
    if (wh1.getRange(i, 1).getValue().indexOf(SearchWord) > -1) {
      
      // 該当データを転記する
      wh1.getRange(i, 1, 1, 3).copyTo(wh2.getRange(J, 1));
      
      // 出力する行を1行ずつずらす
      J++;
    }
  }
  
  // 処理が完了したことを通知する
  SpreadsheetApp.getUi().alert("完了");
}

解説

  • 変数 wh1 には、アクティブなシートを設定。変数 wh2 には、wh1 の次の(右隣り)シートを設定します。
  • 検索キーワードを変数SearchWordに設定。この場合は、文字列”東京”を検索キーワードとして指定。
  • 検索キーワードを変数SearchWordに設定しています。この場合は、文字列”東京”を検索キーワードとして指定。
  • アクティブなシートの最終行の位置を変数LastRowに設定。
  • 最初の行から最終行までの各行について、現在の行に含まれる、特定の検索キーワードが含まれるかどうかをチェックします。indexOf()メソッドは、検索キーワードが見つかった場合に0以上の整数を返し、見つからなかった場合には-1を返します。
  • 特定のキーワードを含む行の場合に、その行のデータを wh2 シートにコピーします。コピーが完了したら、出力する行を 1 行ずつずらします。
  • 処理が完了したことを通知するために、メッセージボックスを表示します。

EXCELのVBAとのコードの違い

Excel VBA では使用されていた Range オブジェクトに対応するオブジェクトが、GAS では getRange メソッドによって得られることです。また、GAS では Excel VBA のような ActiveSheet プロパティが存在しないため、スプレッドシート上で操作する場合には、明示的にシートを指定する必要があります。

コメント

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