【GAS】文字列を検索して該当件数を求めるには?

訪問して頂きありがとうございます。まさふくろーです。

この記事では、文字列を検索して該当件数を求める方法をご紹介します。

文字列を検索して該当件数を求める

使用するシート名

「シート1」シート、「住所マスタ」シート

 

動作イメージ

  1. ボタンをクリック
  2. 「シート1」シートの検索文字列の値を取得
  3. 2.で取得した値で「住所マスタ」シートを検索し、該当件数を取得
  4. 「シート1」シートの該当件数に、3.で取得した該当件数を設定

使用するデータ

都道府県一覧の全国一括.zip

参考 郵便番号データ日本郵便

使用するメソッド

getActiveSpreadsheetメソッド

SpreadsheetApp.getActiveSpreadsheet()

説明
現在アクティブなSpreadsheetオブジェクトを返します。

getSheetByNameメソッド

Spreadsheetオブジェクト.getSheetByName(シート名)

説明
指定したシート名のSheetオブジェクトを返します。

getRangeメソッド

Sheetオブジェクト.getRange(a1Notation)

説明
セル範囲を取得します。
指定項目 必須 説明
a1Notation 単一セルまたはセル範囲(複数セル)を指定します。

getValueメソッド

getRangeメソッドで取得した単一セル.getValue()

説明
getRangeメソッドで取得した単一セルの値を取得します。

createTextFinderメソッド

SheetオブジェクトまたはgetRangeメソッド.createTextFinder(検索する文字列)

説明
Sheetオブジェクトを使用した場合、シート全体のTextFinderオブジェクトを返します。
getRangeメソッドを使用した場合、指定範囲のTextFinderオブジェクトを返します。
指定項目 必須 説明
検索する文字列 検索する文字列を指定します。

findAllメソッド

TextFinderオブジェクト.findAll()

説明
Sheetオブジェクトを使用した場合、シート全体を検索します。
getRangeメソッドを使用した場合、指定範囲内を検索します。
検索結果を2次元配列で返します。

setValueメソッド

getRangeメソッドで取得した単一セル.setValue(設定する値)

説明
getRangeメソッドで取得した単一セルに値を設定します。
指定項目 必須 説明
設定する値 単一セルに設定する値を指定します。

使用するプロパティ

lengthプロパティ

配列変数.length

説明
配列の要素数を取得するには、lengthプロパティを使います。

手順

おおまかな流れ

Step.1
シートにボタンを作成

Step.2
スクリプトを作成

Step.3
ボタンにスクリプトを割り当てる

詳細

Step.1 シートにボタンを作成

参考 Step.1 シートにボタンを作成ボタンをクリックしたときにスクリプトを実行する

Step.2 スクリプトを作成

「ツール」をクリックします。

 

「スクリプトエディタ」を選択します。

 

すると、スクリプトエディタが起動します。

 

スクリプトを記述します。

 

getHitCount関数(シート全体を検索)

処理概要:

検索ボタンをクリックしたときに、「住所マスタ」シート全体を検索し、該当件数を取得する関数。

1 「getHitCount」関数を作成。
3 現在アクティブなスプレッドシートオブジェクトを取得し、変数「spreadsheet」に格納
4 「シート1」シートオブジェクトを、変数「sheet」に格納。
6 「シート1」シートの「B2」セルの位置を取得。
7 「シート1」シートの「B2」セルの値を取得。
9 「住所マスタ」シートオブジェクトを、変数「sheet」に格納。
11 7行目で取得した値をもとに作られたオブジェクトを、変数「textFinder」に格納。(対象はシート全体)
12 11行目で作成されたオブジェクトをもとに検索し、結果を変数「find」に格納。
13 12行目で取得した2次元配列の変数「find」から要素数を取得し、変数「HitCount」に格納。
15 「シート1」シートオブジェクトを、変数「sheet」に格納。
17 「シート1」シートの「B3」セルの位置を取得。
18 「シート1」シートの「B3」セルに、13行目で取得した値を設定。

getHitCount関数(指定列のみ検索)

処理概要:

検索ボタンをクリックしたときに、「住所マスタ」シートの指定列のみを検索し、該当件数を取得する関数。

1 「getHitCount」関数を作成。
3 現在アクティブなスプレッドシートオブジェクトを取得し、変数「spreadsheet」に格納
4 「シート1」シートオブジェクトを、変数「sheet」に格納。
6 「シート1」シートの「B2」セルの位置を取得。
7 「シート1」シートの「B2」セルの値を取得。
9 「住所マスタ」シートオブジェクトを、変数「sheet」に格納。
11 「住所マスタ」シートの「H」列の位置を取得。
12 7行目で取得した値をもとに作られたオブジェクトを、変数「textFinder」に格納。(対象はH列のみ)
13 12行目で作成されたオブジェクトをもとに検索し、結果を変数「find」に格納。
14 13行目で取得した2次元配列の変数「find」から要素数を取得し、変数「HitCount」に格納。
16 「シート1」シートオブジェクトを、変数「sheet」に格納。
18 「シート1」シートの「B3」セルの位置を取得。
19 「シート1」シートの「B3」セルに、14行目で取得した値を設定。
Step.3 ボタンにスクリプトを割り当てる

参考 Step.3 ボタンにスクリプトを割り当てるボタンをクリックしたときにスクリプトを実行する

関連記事

文字列を検索して該当データを取得する

【GAS】文字列を検索して該当データを取得するには?

最後まで読んでいただき、ありがとうございました!