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

【GAS】指定したキーワードを検索して一致したセルを新しいシートにコピーする

【GAS】指定ワードに一致したセルを新規シートに転記する GAS

一致したセルを抽出して新規シートに転記する

Googleスプレッドシートのアクティブなシートから、指定したキーワードを含むセルを検索し、重複するセルを抽出して、新しいシートにコピーする

  • 指定したセルを検索し、そのセルに入力された値と一致するすべてのセルを検索する
  • 重複するセルを抽出し、それらのセルを新しいシートにコピーする
  • 新しいシートにアクティブな選択範囲を設定する
function 検索セルを選択して重複セル全て抽出して新規シート抽出() {
  var key, fnd, fnd_all, adr;
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getDataRange();
  var cell = sheet.getActiveRange();
  var cellValue = cell.getValue();
  
  range.clearFormat();
  
  // 検索キーを取得する
  key = Browser.inputBox("検索するセルを選択", Browser.Buttons.OK_CANCEL);
  if (key == "cancel" || key == "") {
    Browser.msgBox("キャンセルされました。");
    return;
  }
  
  // Findメソッドを用いてセルの検索を行う
  fnd = range.createTextFinder(key).matchCase(false).matchEntireCell(false).findAll();
  if (fnd.length == 0) {
    Browser.msgBox("見つかりませんでした。");
    return;
  } else {
    fnd_all = fnd;
    adr = fnd[0].getA1Notation();
  }
  
  // セルの重複を抽出する
  for (var i = 1; i < fnd.length; i++) {
    if (fnd[i].getA1Notation() != adr) {
      fnd_all = fnd_all.concat(fnd[i]);
    }
  }
  
  // 抽出されたセルをハイライトする
  fnd_all.forEach(function(cell) {
    cell.setBackgroundRGB(204, 255, 255);
  });
  
  // 抽出されたセルの行を新しいシートにコピーする
  var newSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet();
  newSheet.setName(sheet.getName() + "_" + Utilities.formatDate(new Date(), "JST", "H時mm分ss秒"));
  var copiedRange = fnd_all[0].getRow() + ":" + fnd_all[fnd_all.length - 1].getRow();
  sheet.getRange(copiedRange).copyTo(newSheet.getRange("A1"));
  
  // 新しいシートをアクティブにする
  newSheet.setActiveSelection(sheet.getRange("A1"));
  
  // 完了メッセージを表示する
  Browser.msgBox("完了:" + fnd_all.length + "件");
}

解説

  • 変数の宣言
    • key:検索キーとなる文字列
    • fnd:Findメソッドで検索されたセルの配列
    • fnd_all:重複セルを含むすべての検索されたセルの配列
    • adr:最初に検索されたセルのアドレス
  • 検索キーの取得
    • Browser.inputBox()メソッドを使用して、検索するセルを選択するダイアログボックスが表示されます。このダイアログボックスで入力されたテキストは、key変数に格納されます。キャンセルボタンがクリックされた場合、または空のテキストが入力された場合は、スクリプトが終了します。
  • セルの検索
    • Findメソッドを使用して、セルの検索を行います。ここでは、key変数に格納された文字列と一致するすべてのセルを検索します。matchCase()メソッドとmatchEntireCell()メソッドを使用して、大文字と小文字を区別せずに、セルの部分一致を検索します。Findメソッドによって返される結果は、fnd変数に格納されます。

コメント

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