いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)数値や日付にワイルドカードを使う

 Googleスプレッドシートのいくつかの関数で使えるワイルドカードを数値(数字)や日付に適用する方法についてです。代表的な2つの関数の例を紹介します。

  • COUNTIFやSUMIFなどの関数内で数値や日付を文字列に変換してしまえばワイルドカードで判定できます。

COUNTIF関数の例

 まずは失敗例です。
 画像ではB3:B10の範囲に入力されている数値のうち、1の位が「2」であるものをカウントしようとしてD3セルに「=COUNTIF(B3:B10,"*2")」と入力しています。
 しかし基本的にワイルドカードは数値や文字列に適用できないので、結果は「0」となっています。

 


 そこで式を次のように変えて正しい結果を求めています。

 D3セル

=COUNTIF(ARRAYFORMULA(TO_TEXT(B3:B10)),"*2")

 第1引数の「ARRAYFORMULA(TO_TEXT(B3:B10))」で数値をすべて文字列に変換しています。これでワイルドカードが適用されるようになります。Excelと異なり第1引数(範囲)で関数が使えるためこのような柔軟な使い方が可能となっています。
 ただし複数のセルが対象となっているためARRAYFORMULAを忘れるとうまくいかないことが注意点です。



 次の画像は日付に適用した例です(式は全く同じ)。
 日の1の位が「2」である3つの日付をカウントできているのがわかります。

SUMIF関数の例

 こちらはSUMIF関数の例です。
 B3:B10の範囲に入力されている数値のうち、1の位が「2」であるものの合計を求めています。


 D3セル

=SUMIF(ARRAYFORMULA(TO_TEXT(B3:B10)),"*2",B3:B10)

 COUNTIFの例と同様に第1引数(検索範囲)でTO_TEXT関数を使い、値を文字列に変換しています。これでワイルドカードが適用されます。
 ところでこの例の場合「検索範囲も合計範囲も同じB3:B10なのだから第3引数(合計範囲)を省略できるのではないか」と思われるかもしれませんが、省略すると結果は「0」になります。正しくは「検索範囲はARRAYFORMULA(TO_TEXT(B3:B10))、合計範囲はB3:B10」なので、第3引数を省略すると変換された文字列の方が合計範囲とみなされ、結果は0になります。

「&""」としたときの問題

 上記例では数値や日付をTO_TEXT関数で文字列に変換していますが、これを簡単に「B3:B10&""」としたくなるかもしれません。
 これは数値の場合はいいのですが、日付の場合に判定を誤ります(画像参照)。
 このやり方だと日付が「45058」といった文字列(シリアル値を文字列にしたもの)に変換されてしまうからです。