空白のセルにはまったく文字を入力していない場合(未入力セル)と、あえて長さ0の文字列(空白文字列)を入力する場合があります。IF関数で空白を扱うには、これら2つの共通点と相違点を理解しなければなりません。
ところで、IF関数は通常、論理式を先に入力し、真の場合、偽の場合の順に入力しますが、実際には必ずしもその順序で入力するとは限りません。ある計算式を入力した後で、計算結果を返すのが適切でない場合やエラーになる場合に、IF関数を直接入力することによって計算を回避するといった使い方もあります。この場合は、論理式をあとで入力します。
そこで、今回は、IF関数で空白を判定もしくは空白を返す練習問題を出題します。
目次
- 1.空白文字列を返す
- 2.計算の回避
- 3.ある条件を満たす場合に印をつける
- 4.未入力セルと空白文字列の違い
- 5.空白セルを合計するときの注意点
- 6.空白を返したセルはジャンプで選択できない
- 7.空白だったら空白にする
- 8.空白を埋める
- 9.何らかの文字や数値が入力されていることの判定
- 10.動画版はこちら(無料)
1.空白文字列を返す
問題
A列の値が60以上なら合格、そうでなければ不合格とする数式を入力した。合格だけを表示し、不合格を空白にするにはどうすればよいか。また、不合格だけを表示するにはどうすればよいか。
解説
60以上を合格、それ以外を不合格としています。
- =IF(A1>=60,"合格","不合格")
ここで、不合格の場合に何も表示しないようにするために、カンマと不合格の部分を消したとします。
消したとしても60以上であれば合格と表示されることに変わりはありません。それは、TRUEの代わりに「合格」と表示するからです(参考:IF関数は、判定しているのではなく「変換しているだけ」であることを理解せよ【Excel】)。
オートフィルをします。不合格がFALSEになりました。
確かに、比較演算だけをするとFALSEです(参考:【Excel】真と偽の意味と比較演算のメリットを知らずしてIF関数を語ってはいけない)。
もともとIF関数は、比較演算をした結果であるTRUEとFALSEを、別の文字列に変換するものです。
合格の後にカンマが無く、さらに、FALSEの代わりに表示するものを指定していない場合は、FALSEと表示されます。
表示しないことを表すには、ダブルクォーテーションを2個入れます。これは不合格の部分だけを削除したのと同じです。このような表記のことを「空白文字列」といいます。
不合格の部分だけを消して、ダブルクォーテーション2つを残します。
これで判定結果が空白になります。
逆に、合格の部分だけを消して、ダブルクォーテーション2つを残します。
60以上で空白になります。60未満の場合だけ不合格と表示されます。
TRUEの場合に空白にする場合も、ダブルクォーテーションを2個入れます。
2.計算の回避
問題
セルA2とセルB2の値を比較して、セルA2の値が0より大きい場合に限り、伸び率を表示しなさい。
解説
伸び率を求めます。伸び率は変化した後を変化する前で割って1を引けばよいです(参考:増減率をパーセントで求めるには、増減を表す比率から1を引くだけ)。
通常はこれで良いのですが、先月の値を0にするとエラーになります。
先月比や伸び率は、変化する前の値から何倍に増えたかを表す割合であり、その比率で増え方が急であったか緩やかな伸びであったかを判断する数値です。
変化する前の値が0の場合、何倍しても0なので伸び率を求めることは不可能です。
0より大きい場合に限って計算する場合は、IF関数で囲みます。
0より大きい場合は伸び率を計算しますが、そうでない場合は空白を返します。
計算をするのが不都合な場合は、IF関数で囲み、計算をするための条件を論理式として入力します。
計算ができない場合やエラーの場合に、計算を回避することができます。
数値、セル参照または数式のときは原則としてダブルクォーテーションを付けませんが、空白を返すときはダブルクォーテーションが必要です。
3.ある条件を満たす場合に印をつける
問題
A列の値が60未満の場合、右隣りのセルに「*」を表示しなさい。また、これを利用して、A列の値が60未満なら不合格、そうでなければ合格としなさい。
解説
IF関数を記述します。A列の値が60未満であることを判定して、「*」を表示します。そうでない場合は空白を返します。
60未満の場合だけ印をつけることができます。
ある条件を満たしている値だけ印をつける場合、IF関数を使います。このとき、条件を満たさないほうは空白文字列にします。
「*」を、「不」にします。
この数式の後に合格を連結します。
これで合格と不合格になります。
4.未入力セルと空白文字列の違い
(1)参照した場合の違い
問題
セルA2に空白文字列「""」を入力しなさい。また、セルA1とセルA2をそれぞれ参照した時の違いを述べなさい。
解説
ダブルクォーテーション2つを入力すると、そのままダブルクォーテーション2つが表示されます。これは空白文字列ではありません。
空白文字列は先頭にイコールを付けて入力します。
セルA1は何も入力していない未入力のセル、セルA2は空白文字列を数式で入力したセルですが、見た目は全く同じです。
セルA1を参照します。
0になります。
何も入力していないセルは数式の中で参照すると0と同じとみなされます。
何も入力していないというのはデータが存在せず、数値なのか文字列なのかも全く分からないという状態です。
原則として未入力のセルを参照すると数値の0として扱われます。ただし、例外はあります。
未入力のセル同士を連結します。
00ではなく空白になります。
文字列連結演算のように、明らかに文字列として扱っている数式の場合は、0ではなく空白として扱います。
今度はセルA2を参照します。
空白文字列を入力したセルは0ではなく、空白文字列のままです。
空白文字列を入力した場合は、数値ではなく文字列を入力しているので、参照しても数値の0にはなりません。
数値ではないので、数値であることを前提とした計算はできません。例えば、足し算をするとエラーになります。
(2)数値と比較した場合の違い
問題
セルA1の値が60未満の場合に空白を返す数式を入力した。セルA1を空白にするとどうなるか。また、空白文字列「""」を入力した場合はどうか。
解説
いま、セルB1は空白になっています。セルA1の値が60未満のため空白文字列を返しているからです。
- =IF(A1<60,"","合格")
セルA1の値を削除します。空白のままです。
何も入力していないセルは、数値との比較演算では0とみなされますから、60より小さいという判定となり空白文字列となります。
セルA1に空白文字列を入力します。
合格となりました。
空白文字列を入力したセルは数値の0とはみなされず、文字列のまま判定します。
いっぱんに、比較演算では文字列は数値よりも大きいと判定されるため、FALSE、つまり合格と表示されます。
このように、空白のセルが必ずしも0になるとは限らないので注意が必要です。
5.空白セルを合計するときの注意点
問題
10000円未満の場合は送料550円で、10000円以上の場合は空白としたらエラーになった。正しく合計を求めなさい。
解説
いま、送料を空白にしています。
商品代金と送料を足し算します。送料が空白であってもエラーにはなりません。
完全な空白セル、つまり数式も何も入力していないセルの場合は、足し算や引き算などの四則演算をすると、数値の0とみなされるのでエラーにはなりません。
10000円未満の場合に550円とし、それ以外を0円としてもエラーにはなりません。
しかし、0円ではなく、空白を返した場合はエラーになります。
足し算や引き算などの四則演算はそのうちの1つが文字列の場合、計算できずエラーとなります。
空白文字列は文字列の一種なので、0とはみなされません。したがって、四則演算をするとエラーになります。
合計を足し算ではなく、オートSUMで求めます(参考:【Excel】合計はオートSUMボタンを押すだけ~!で済めば苦労はしない)。
エラーにはなりません。
SUM関数は、計算する範囲の中に文字列があった場合、文字列を除外して計算します。足し算はできないので、足し算をせず除外するという意味です。
空白文字列も文字列の一種なので計算から除外されます。そのためエラーにはならないのです。
6.空白を返したセルはジャンプで選択できない
問題
A列の数値がマイナスなら空白を返し、そうでなければA列の数値をそのまま表示する式を入力した。
B列を選択して、ジャンプ機能を用いて空白セルを選択しようとしたところ、「該当するセルが見つかりません」というエラーが表示された。この理由を述べたうえで、空白と判定されたセルをすべて選択しなさい。
解説
数式を何も入力していない状態で、範囲選択します。
条件を選択してジャンプ、空白セルで選択するとエラーにはなりません(参考:【Excelジャンプ】空白セルを一括選択して一括コピーして一括削除する)。
今度は、A列が0より小さい場合は空白を返し、それ以外は元の数値をそのまま返す数式を入力します。
これによって、マイナスの値の場合だけ空白になっています。B列を選択します。
条件を選択してジャンプ、空白セルで選択しようとしてもエラーになります。
完全な空白セル、つまり数式も何も入力されていないセルは、ジャンプ機能の空白セルの選択の対象となります。
しかし、数式が入っていて空白になっているセルは、ジャンプ機能の空白セルの対象外です。
この場合は、検索の画面を表示します(参考:【Excel】特定の文字列を含むセルを全部選択するには[すべて検索]をして[すべて選択]をすればよい)。
オプションをクリックして、検索対象を値にします。
検索する文字列を空欄にしたまま、すべて検索します。ALTキー+Aですべて選択します。これで空白を返したセルだけを選択することができます。
7.空白だったら空白にする
(1)空白を判定する
問題
セルA1の値を2倍しなさい。ただし、セルA1が空白であれば空白にしなさい。
解説
セルA1の値を2倍します。
セルA1を空白にします。0になります。
また、空白文字列を入力するとエラーになります。
何も入力していない空白セルを参照すると数値の0とみなされますので、2倍すると0になります。
また、空白文字列は四則演算ができないのでエラーになります。
空白であることを判定するには空白文字列とイコールでつないで判定します。
空白であればTRUE、何か入力すればFALSEとなります。
空白セルであることの判定は空白文字列と比較をします(参考:【Excel】一致の判定はイコール「=」、等しくないことの判定は不等号2つ「<>」)。
何も入力していない空白セルも空白文字列もTRUEとなります。何らかの文字や数値を入力した時にFALSEとなります。
IF関数でTRUEとFALSEを別の文字列に変換することも可能です。
IF関数を挿入します。空白であることを判定します。空白であれば空白を返します。それ以外は2倍する計算をします。
セルA1を空白にすると、連動して空白になります。
あるセルが空白であれば、別のセルも連動して空白にする数式は暗記したほうが良いでしょう。
(2)計算結果を表示しない
問題
セル範囲D2:D6に単価×数量を求めなさい。ただし、商品名が空白のときは空白としなさい。
解説
単価と個数を掛け算します。このとき、単価と数量が入っていない行は0になります。それは、何も入力していないセルは参照すると数値の0とみなされるからです。
この0を表示しないようにするには、商品名が入っているかどうかを判定して、空白を返せばよいです。
商品名が空白であるかどうかを判定し、商品名が空白であれば空白を返し、そうでなければ単価と個数を掛け算します。
IF関数を挿入します。商品名が空白であることを判定して、TRUEであれば空白を返します。そうでなければ計算をすればよいです。
これで完成です。
このように、はじめに計算式を入力したあとで、空白であれば空白を返すという判定を追加することが非常に多いです。空白であれば空白を返すという入力方法は何回も繰り返し練習しておいたほうが良いです。
(3)累計を表示しない
問題
A列の累計を求めなさい。ただし、A列が空白の場合、累計を表示する必要はない。
解説
上のセルと左のセルを足して累計を求めます(参考:【Excel数式】計算が苦手な人のための「累計」「残高」「繰越」)。
オートフィルをします。空白セルは0とみなされるので、同じ残高が表示されます。
そこでIF関数を挿入します。A列が空白の場合には空白にします。
これで完成です。
8.空白を埋める
問題
A列に文字が入力されていればその文字を表示し、空白の場合は上と同じ文字を表示しなさい。また、A列に文字が入力されていれば1とし、空白の場合は1ずつ増やして連番を表示しなさい。
解説
空白の場合、上と同じ文字を入れます。
A列が空白であることを判定して、上のセルを参照しますが、文字が入力されていればA列の文字を参照します。
IF関数を挿入します。A列が空白の場合には上のセルを参照します。そうでなければA列を参照します。
これで空白を埋めるように同じ文字が並びます。
連続する数値を入力するには上のセルに1を足します(参考:【Excel】オートフィルは累積的に同じ計算を繰り返すときにも使う)。
連番を入力して文字が入っていれば1にリセットします。
A列が空白であることを判定して、上のセルの値に1を足しますが、文字が入力されていれば1にします。
IF関数を挿入します。A列が空白の場合には上のセルに1をたします。そうでなければ1にします。
これで記号ごとに連番を入力することができます。
9.何らかの文字や数値が入力されていることの判定
問題
商品名が入力されていれば、D列にTRUEと表示しなさい。また、商品名が入力されている場合に限り、D列に単価×個数を求めなさい。
解説
何らかの文字や数値が入力されているということは、「空白ではない」ということです。
ダブルクォーテーション2つの空白文字列とイコールで比較をすれば空白であることが判定できます。その逆で、空白文字列と不一致であることを判定すれば、何らかの文字や数値が入力されていることを判定することができます。
商品名を参照します。空白文字列と不一致であることを判定します。TRUEとなります。
オートフィルをします。空白の場合はFALSEとなります。
文字が入力されていることの判定ができれば、その場合だけ計算をすればよいです。
IF関数を挿入します。空白でなければ、単価と個数を掛け算します。それ以外は空白を返します。
これで完成です。
別解
単価と個数を掛け算します。
IF関数を挿入して、商品名が空白の場合だけ空白を返します。
空白でなければ計算するのと、空白だったら空白にするのは同じ結果になります。
空白であることを判定するのと、文字列が入力されていることを判定するのは、真の場合と偽の場合が逆になります。
解説は以上です。
10.動画版はこちら(無料)
この記事は、わえなび実力養成講座「ファンダメンタルExcel13」Program 13-11、13-12、13-12-2、13-14、13-15(特訓問題のみ)のYoutube動画を書き起こして、加筆修正したものです。
- ファンダメンタルExcel 13-11 空白を返す【わえなび】(ファンダメンタルExcel Program13 IF関数の基本)
- ファンダメンタルExcel 13-12 未入力セルと空白文字列の違い【わえなび】(ファンダメンタルExcel Program13 IF関数の基本)
- ファンダメンタルExcel 13-12-2 補講 空白を返したセルはジャンプで選択できない【わえなび】(ファンダメンタルExcel Program13 IF関数の基本)
- ファンダメンタルExcel 13-14 空白だったら空白にする【わえなび】(ファンダメンタルExcel Program13 IF関数の基本)
- ファンダメンタルExcel 13-15 不一致の判定(等しくない)【わえなび】(ファンダメンタルExcel Program13 IF関数の基本)