いきなり答える備忘録

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

(Gスプレッドシート)空白セルを返す・判定する・数える

 Googleスプレッドシートで空白セル(この記事での空白セルは、値がないセルの状態(空文字列でもないもの)を指します)を式の結果として返す方法を示します。
 また、セルが空白セルであるかを判定する方法、そして空白セルの数を数える方法についても紹介します。
 
  • スプレッドシートでは式の結果として空白セルを返すことができます。
  • 空白セルかどうかはISBLANK関数で判定できます。
  • COUNITF関数の第2引数を「"="」とすることで空白セルをカウントできます。COUNTBLANK関数は空白セルのほか空文字列をもカウントするので注意が必要です。

手順

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

 B,C,E列に各種の値と式を入力しています。

 評価の対象となるのはB3:B7の5つの値と式です。それぞれの内容は次のとおりです。
B3:本来の空白セル(セルの初期状態)
B4:B3セルを参照する式「=B3」
B5:IF関数を入力し、戻り値となる引数(第2引数と第3引数)に何も指定しない
B6:空文字(長さ0の文字列)、つまり「=""」
B7:単なる文字列

 これらの結果について、C列にISBLANK関数(空白セルかどうかを判定する関数)を置いて判定します。
 また、B10セルには「=countif(B3:B7,"=")」という一見奇妙な式を入力します。
 さらにE列にはB3:B7の5つの値と式を空文字列と比較する式を置きます。
 

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

 結果はこうなります。
 C列をみると、本来の空白セルであるB3のほか空白セルを参照しているB4、戻り値となる引数に何も指定しないB5が空白セルと判定されます。
 このように、Googleスプレッドシートではセルに式を入力した結果として空白セルを返すということができます。Excelではこれができないため、空白セルに関する相違点となっています。ただしGoogleスプレッドシートでもほとんどの関数や式が空白セルと空文字列を同一視するため、取り扱いはExcelとほぼ同様です。データベースにおけるNullのようにシビアなものではありません。
 しかし空白セルを特に出力しようとすれば出力でき、判定・集計しようとすればできる点には留意する必要があります。実際にC列のISBLANK関数で判定できているだけでなく、B10セルのCOUNTIF関数で空白セルをきちんとカウントできているのがわかります。
 一方、E列の結果をみると本来の空文字列であるB6のほか、B3~B5についてもTRUEと判定されています。この式では空白セルと空文字列を区別することはできません。

以下は備考です。

  • アポストロフィ(')だけのセルは空文字列(="")と同じ結果になります。
  • COUNTBLANK関数は空白セルのほか空文字列もカウントするので、正確な空白セルのカウントには使えません。
  • QUERY関数の「WHERE X=''」という条件は空白セルと空文字列に該当します。「WHERE X IS NULL」も同様です(わざわざこの表現を用意しているにも関わらず)。