シートを操作する

【GAS】スプレッドシートで検索結果の1つ前のセルを返す

GASでスプレッドシートで検索結果の1つ前のセルを返すには「findPrevious()」を利用する。

findPrevious()

検索条件に一致する前のセルを返します。

https://developers.google.com/apps-script/reference/spreadsheet/text-finder#findprevious

スプレッドシートで検索結果の1つ前のセルを返すGAS実行の様子

findPrevious()メソッドを利用して、スプレッドシートで検索結果の1つ前のセルを返すGASを実行してみました。

findPrevious-yes
findPrevious()を実行した様子

findNext()メソッドで検索条件に一致するセルを返す場合は、以下記事を御覧ください。

参照記事:【GAS】スプレッドシートで検索条件に一致するセルを返す

スプレッドシートで検索結果の1つ前のセルを返すGAS

function sheetrfind(){
  //SpreadsheetAppを起動
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sht = ss.getSheets()[0];
  //見出し作成
  var text = [
    ["文字を","検索する","テスト"]
  ];
  sht.getRange("A1:C1")
      .setValues(text)
      .setFontWeight("bold").setFontSize(16);
 //繰返しテキストを変数へ格納
  var array1,array2,array3
    array1 = "Spread";
    array2 = "Sheet";
    array3 = ".BLUE";
 //変数を繰り返しA~D列の101行目まで入力
  for(let i=2;i<=101;i++){
    sht.getRange(i,1).setValue(array1);//101行目までarray1をセット
    sht.getRange(i,2).setValue(array2);//101行目までarray2をセット
    sht.getRange(i,3).setValue(array3);//101行目までarray3をセット
  }
 
 //変数txtへあいうえおを格納して適当な位置へ設置
 var txt = "検索文字";
    sht.getRange(3,3).setValue(txt);
    sht.getRange(9,1).setValue(txt);
 //YESNOでテキスト検索するか確認
 Browser.msgBox("文字「"+txt+"」を検索します");
    //createTextFinderで文字を検索
    var txtfind = ss.createTextFinder(txt);
    //finAllですべての検索結果を取得する
    var rngs = txtfind.findAll();
    //全ての検索結果をA1形式で取得する
    for(let i in rngs){
      //actrngへA1形式で値を取得
      var actrng = rngs[i].getA1Notation();
    // メッセージでtxtの取得回数と取得位置を掲載
    Browser.msgBox(txt+"があるセルの"+(Number(i)+1)+"つ目は「"+actrng+"」です!");
    }
    //YESNOメッセージ
    var yesno = Browser.msgBox("前の検索結果セルも取得しますか?",Browser.Buttons.YES_NO_CANCEL);
    //YESなら
    if(yesno == "yes"){
     //■findPreviousで前の検索結果を取得
      var berngs = txtfind.findPrevious();
      //findPreviousの取得値をA1形式で取得
      var beactrng = berngs.getA1Notation();
    Browser.msgBox("1つ目の検索結果に対する前の検索結果は「"+beactrng+"」です");
  } else {
    // キャンセルした旨を掲載
    Browser.msgBox("検索はキャンセルしました");
  }
}

findPrevious()の戻り値

Range—前の一致するセル、nullまたは前の一致がない場合

スプレッドシートで検索結果の1つ前のセルを返すまとめ

GAS×スプレッドシートで検索結果の1つ前のセルを返すならfindPrevious()メソッドを利用しましょう。

関連記事:【GAS】スプレッドシート内で検索を行う

関連記事:【GAS】スプレッドシートのUIに関数メニューを追加する

関連記事:【GAS】スプレッドシートに名前とインデックスを指定した新規シートを挿入する

関連記事:【GAS】スプレッドシートで指定した名前で新規シートを作成する

関連記事:【GAS】スプレッドシートのグリッド線を非表示にする

-シートを操作する