Excelではお馴染みの=IF(A1="","",A1)。
IF関数が使えるエクセルユーザーであれば一度は書いたことがあるこの数式。今回は""を何もないと覚えているのは間違いですよというお話です。
##""ってなに?
いきなり答えを言ってしまいましょう。答えは0文字の文字列(空文字)です。
エクセルやスプレッドシートでは数式内で文字列を表現したい時に"で囲むというルールがあります。
例えばセルに="ダブルクォーテーション"と入力すると"は出力されず、ダブルクォーテーションと出力されます。
※ダブルクォーテーションを付けず=ダブルクォーテーションと入力するとエラーになります。
##プログラミングでの空白という言葉のややこしさ
空白という言葉はプログラミング的に言わせれば定義が広すぎてあまりにも使いにくい。
下の3つは明確な違いがあるにもかかわらず、どれを表現するにも空白という文字が当てはまってしまいます。
####1. スペース
半角スペース、全角スペースを指します。
ちなみにエクセル数式内でスペースを表現しようと思ったら半角スペースの場合=" "、全角スペースの場合=" "と書きます。表示されるセルには何も書かれていないように見えますが、きちんとスペースが入っています。※LEN関数で調べると1と返されます。
####2. 空文字
""←これ。0文字の文字列。=""と入力したセルにたいしてLEN関数で調べると0が返されます。しかし下のブランクとは異なります。0文字の文字列がセルに入っているのです。
####3. ブランク
何もない。セルに対して何も入っていない状態。""をこのブランクだと考えていらっしゃる方が多い。
空白-wikipedia
文章中で語と語の区切りを表したり、段落を作るなどのために空けたりする空間のこと。→スペース、和字間隔
ある区域の中に物、人、情報などが入っていないこと。空っぽであること。→ブランク
##""(空文字)とブランクは別物
さてスペースはわかるとして、空文字とブランクの違いについて検証したいと思います。
####ISBLANK関数
ここでExcelではあまりお目にかからないISBLANKという関数を紹介します。
ISBLANk関数は=ISBLANK(セル)と書き、引数で渡したセルがブランクかどうか返す関数です。
ブランクの場合はTRUE、ブランクじゃない場合はFALSEを返します。
数式 | ブランクの場合 | ブランクじゃない場合 |
---|---|---|
=ISBLANK(セル) | TRUE | FALSE |
では検証してみましょう。下をそれぞれエクセル、スプレッドシートどちらでもいいので書いてみてください。
■検証
A1セルに=""
A2セル何もしない
B1セルに=IF(ISBLANK(A1),"ブランク","ブランクじゃない")
B2セルに=IF(ISBLANK(A2),"ブランク","ブランクじゃない")
■結果
B1セル:ブランクじゃない
B2セル:ブランク
というように空文字とブランクは明確に違いがあります。
補足 エクセル、スプレッドシート共にISBLANKの関数説明ではブランクのことを空白と表現しています。
エクセルヘルプ(2013年version):
ISBLANK 関数は、引数値が空白セルへの参照の場合に論理値 TRUE を返し、それ以外の場合に FALSE を返します。
Googleスプレッドシート:
ISBLANK 関数は値が空のセルか空のセルへの参照を含んでいる場合に TRUE を返し、データかデータへの参照を含んでいる場合に FALSE を返します。
##ブランクセルはブランクと空文字を兼ねる
ただ1点ややこしいのはブランクセルは""空文字という意味合いも持っています。
A1セルに何も書いていない状態でB1セルに下の数式を交互に書いてみてください。
=A1=""
=ISBLANK(A1)
どちらも結果はTRUEです。このことからブランクセルはブランク、""空文字を兼ねるということがわかります。
##まとめ
・エクセル、スプレッドシートで数式内の文字列は""の間に書く。
・=""とダブルクォーテーションの間に何もかかなければ0文字の空文字がセルに入る。
・スペース、空文字、ブランクはそれぞれ違いがあり異なる。
・ISBLANK関数でブランクを検証できる。
・ブランクセルはブランクと空文字を兼ねる。
ちなみにGoogleスプレッドシートでは空文字、ブランクの扱いがとっても大事です。ここらへんはまた今度~