いきなり答える備忘録

G Suite・Microsoft 365・LibreOfficeなどに関するメモと日々の実験

(Gスプレッドシート)条件にマッチする文字列を結合する

 Googleスプレッドシートで、一定の条件付きで文字列を抽出して結合する方法についてです。実用性を考慮し、区切り文字を挿んで結合するものとします。

  • FILTER関数とJOIN関数を使って、条件にマッチする文字列を結合することができます。

手順

条件に直接マッチする文字列を結合する例

f:id:accs2014:20200910233431p:plain:right:w600

 画像ではB列に県名が、C列に市町名が記録されています。
 そこでE2セルに式を入力し、C列の市町名のうち市の名前(最後の文字が「市」であるもの)だけを抽出して結合しています。

 E3セル

=JOIN(",",FILTER(C3:C10,RIGHT(C3:C10)="市"))

 FILTER関数とRIGHT関数を使い、C列の値のうち一番右の文字が「市」であるものを抽出し、JOIN関数で結合しています。
 なお、RIGHT関数の第2引数を省略すると1文字だけ抽出できます。
 

f:id:accs2014:20200910233435p:plain:right:w500

 こちらでは、市町名に「原」の字を含むものを抽出して結合しています。

 E3セル

=JOIN(",",FILTER(C3:C12,REGEXMATCH(C3:C12,"原")))

 REGEXMATCH関数を使って「原」を含むものを抽出してJOIN関数で結合しています。
 文字列のマッチングには上記のRIGHT関数のほかLEFT関数やFIND関数などが利用できますが、このREGEXMATCH関数が最も汎用性が高いので覚えておいて損はないと思います。

条件にマッチするセルに対応する文字列を結合する例

f:id:accs2014:20200910233439p:plain:right:w600

 画像では、神奈川県に属する市町名をカンマ付きで結合しています。

 E3セル

=JOIN(",",FILTER(C3:C12,B3:B12="神奈川県"))

 これもFILTER関数を利用してB列が「神奈川県」である行のC列の値を抽出し、JOIN関数で結合しています。
 SUMIFの文字列結合版のようなものですが、案外気づきにくい使い方かもしれません。