訪問して頂きありがとうございます。まさふくろーです。
この記事では、文字列を検索して該当件数を求める方法をご紹介します。
目次
文字列を検索して該当件数を求める
使用するシート名
「シート1」シート、「住所マスタ」シート
動作イメージ
使用するデータ
都道府県一覧の全国一括.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.1 シートにボタンを作成ボタンをクリックしたときにスクリプトを実行する
Step.2 スクリプトを作成
「ツール」をクリックします。
「スクリプトエディタ」を選択します。
すると、スクリプトエディタが起動します。
スクリプトを記述します。
getHitCount関数(シート全体を検索)
処理概要:
検索ボタンをクリックしたときに、「住所マスタ」シート全体を検索し、該当件数を取得する関数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
function getHitCount() { let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); let sheet = spreadsheet.getSheetByName('シート1'); let range = sheet.getRange('B2'); let SearchChar = range.getValue(); sheet = spreadsheet.getSheetByName('住所マスタ'); let textFinder = sheet.createTextFinder(SearchChar); let find = textFinder.findAll(); let HitCount = find.length; sheet = spreadsheet.getSheetByName('シート1'); range = sheet.getRange('B3'); range.setValue(HitCount); } |
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
function getHitCount() { let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); let sheet = spreadsheet.getSheetByName('シート1'); let range = sheet.getRange('B2'); let SearchChar = range.getValue(); sheet = spreadsheet.getSheetByName('住所マスタ'); let targetRange = sheet.getRange('H:H'); let textFinder = targetRange.createTextFinder(SearchChar); let find = textFinder.findAll(); let HitCount = find.length; sheet = spreadsheet.getSheetByName('シート1'); range = sheet.getRange('B3'); range.setValue(HitCount); } |
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 ボタンにスクリプトを割り当てるボタンをクリックしたときにスクリプトを実行する
関連記事
文字列を検索して該当データを取得する
最後まで読んでいただき、ありがとうございました!