Excelで、IF関数やSUMIF, COUNTIF, AVERAGEIF 関数を使うとき、条件式に「” “」(ダブルクォーテーション)が必要な時がありますね。
=IF(A2>150,“〇”,“×”)
(A2セルが150より大きければ〇、150以下なら×)
=IF(A2>0,1,0)
(A2セルが0より大きければ1 そうでなければ0)
=COUNTIF(A:A,0)
(A列にある0の個数を数える)
=COUNTIF(A:A,“>=50”)
(A列にある50以上の数値を数える
こうしてみると、” ” が、必要な時と、いらない時に分かれているのが分かります。
どんな時、” “がいるのか? いらないのか?
それがどうしても分からない時がありますね。この記事は、そんな方にお読みいただきたい記事です。
IF関数の場合
” “の必要/不必要を判断する場合、まずは大きく2つに分かれます。
- IF関数の場合
- COUNTIF, SUMIF, AVERAGEIF関数の場合
まずは、IF関数の場合を見ていきます。
IF関数の第1引数(論理式)
IF関数の第一引数は、論理式です。
- A2>0
- A2=500
- A2=”500″
- A2=”出荷済”
ルールはこんな感じです。
- 論理式全体をくくる” “は、絶対にいらない。(“A2>0″のようなことは絶対にない)
- 数字には、文字列として扱いたいときだけ” “をつける(上の例の3. のような場合)
- 数字以外の文字列には、必ず” “が必要
※「文字列として扱いたい」とは、例えばTシャツのメーカーさんのExcelだと考えたら
500という数字を、Tシャツ500枚とか、一枚500円の意味ではなく、Tシャツの絵柄指定として「500」という文字をプリントしたい! という時の話だとお考えください。
IF関数の第2、第3引数(真の場合・偽の場合)
IF関数の第2、第3引数は、それぞれ、真の場合、偽の場合の値を示します。
- =IF(A2>0,1,”なし”)
- =IF(A2>0,”1″,”なし”)
- =IF(A2>0,”あり”,”なし”)
ここのルールは簡単です。
- 数字には、文字列として扱いたいときだけ” “をつける(上の例の2. のような場合)
- 数字以外の文字列には、必ず” “が必要
COUNTIF,SUMIF,AVERAGEIF関数の場合
やっかいなのは、COUNTIF,SUMIF,AVERAGEIF関数の場合です。
教室では俗に「なんちゃらIF関数」といって、ひとくくりに説明しています。
第1引数の検索範囲は、セル範囲を指定するだけですので、” “はいらないですね。
問題は第2引数です。
第2引数(検索条件)はどんなときに” “がつくか
<, >, =があって、その片方になにもない時は” “が必要
まずはこの2つの例を見てみましょう。
- =COUNTIF(A:A,0) (A列から0に等しいものを数える)
- =COUNTIF(A:A,”=0″) (同上)
ふたつの数式はまったく同じ意味なのですが、” “があり、なしの違いがあります。それは、こんなルールになっています。
- =, <, > の記号があって、記号の左右両方がそろっていない時は ” ” が必要
「ゼロに等しい」という場合、=0 と書きますので、”=0″ としなければなりません。
ですが、「 <, >がなく、=だけなら省略できる」というルールのため、”0″ という表記ができ、記号がひとつもなくなりますから、” ” なしでもいい
ということになります。
数値でなく文字列には” “が必要、ただし前のルールで” “がある場合は二重につける必要なし
次に、文字列をかぞえる場合です。
- =COUNTIF(A;A,”合格”) (A列から「合格」という文字列を数える)
- =COUNTIF(A:A,”=合格”) (同上)
さきほどのIF関数のときと同様に、文字列には” “が必要です。
ただし、IF関数と違うのは、
「<. >, =の左右両方がそろっていない」というルールですでに” “があるときは、中身にまで二重に” “をつける必要はない
ということです。
以上のルールのおさらい
ややこしいですが、おさらいしてみましょう。
- =COUNTIF(A:A,500) (記号がひとつもないので” “はいらない)
- =COUNTIF(A:A,”>500″) (「>」があって、左側になにもないので” “が必要)
- =COUNTIF(A:A,”>=500″) (「>=」があって、左側になにもないので” “が必要)
- =COUNTIF(A:A,”〇”) (「〇」は数字ではないから” “が必要)
- =COUNTIF(A:A,”>A”) (「>」があって、左側になにもないから” “が必要)
- =IF(A2>0,”〇”,”×”) (「A2>0」は、記号の両側がそろっているから” “はいらない。 「〇」と「×」は、数値ではないから” “が必要)
分かりにくい時、Excel自身に確認させる方法があります!
以上、” “が必要な場合、いらない場合のルールをまとめましたが、
「そんなこと言われてもパッと分からない」
という感じがする方も、多いと思います。
そんな時、とっておきの判別方法があるんです。
「=」をつけてセルに入れた時、エラーが出るときは” ” が必要
という、判別方法です。
たとえば、
A2>0
と書きたいとき、” “が必要かどうか、手元のExcelで、適当な空白セルに、次のように書いてみます。
結果は次のようになります。
このように、「TRUE」または「FALSE」と答えが出る場合は、” “は、いりません。
このようにして、ここまでの記事で出てきたものを確認してみます。
- A2=500
- A2=出荷済
- なし
- 0
- =合格
- >=500
- >A
それぞれ、確認のため、適当な空白セルに次のように入力します。
- =A2=500
- =A2=出荷済
- =なし
- =0
- =合格
- =>=500
- =>A
確認の結果は次の通りです。
このようにして、エラーが出るか出ないかで、” “の必要性が判別できます。
より深い話……矛盾に満ちたExcelの文法
いまの判別法について、少し深いおはなしをします。
「=」を頭につけてセルに入力して、エラーが出ないということは、Excelの数式として文法に合っている、ということを示しています。
ということは、” “をつけないで数式内に書いても大丈夫、ということです。
反対に、「=」を頭につけてセルに入力して、エラーが出る、ということは、Excelの数式として文法に合っていない、ということです。
それなのに、IF関数や、またとりわけCOUNTIF,SUMIF,AVERAGEIF関数を書くにあたっては、
Excelの文法に合わないものを、
無理に引数として書いて、
Excelに渡す必要がある、という、
矛盾したルールになっている
ということなのです。
このために、” “でくくって、「文字列としてExcelに渡す」ということをするのです。
これはつまり、
「” “でくくって文字列にしたのだから、とりあえず文法に合わないかもしれないけど、エラーとか出さずに一旦うけとってちょうだいよ! 関数に渡したら、関数のほうでは意味が分かるはずだから!」
という意味の、” ” なのだ、ということなのです。
IFはこう書く、COUNTIFはこう書く、それがルールなんです、とだけ習うと、なんだか頭がごっちゃになってくることがあります。
そんな時は、むしろ、このように考えて、「仕方なく” “でくくっているのだ」と理解すると、もしかしたらスッキリするかもしれません。
コメント