【保存版】これでif関数も怖くない!?if関数の使い方50選

if関数は、様々な用途で使います。

ただ、慣れていないと、どのようにif関数を使えばいいか悩むことも多いです。
そこで、if関数を使う典型的な場面をできるだけ多く挙げていこうと思います。

ぜひ、参考にしてください!

この記事の目次

以下、全ての例で、特別に書いているもの以外は、A1セルに目的の値が入っているものとします。

数値の大小比較(基礎編)

まず、最初に数値の大小比較編です。

0と等しい場合

=if(A1=0, ... , ...)

0と等しくない場合

=if(A1<>0, ... , ...)

※「<>」は、小なり「<」と大なり「>」を組み合わせた2つの文字から構成されています

0より大きい場合(=正の数の場合)

=if(A1>0, ... , ...)

0より小さい場合(=負の数の場合)

=if(A1<0, ... , ...)

1以上の場合

=if(A1>=1, ... , ...)

10以下の場合

=if(A1<=10, ... , ...)

文字列の比較(基礎編)

あるセルに入力されているデータが一致しているかどうかの判定です。

セルに入力されている値が「ABC」と一致する場合

=if(A1="ABC", ... , ...)

セルに入力されている値が「ABC」と一致しない場合

=if(A1<>"ABC", ... , ...)

※「<>」は、小なり「<」と大なり「>」を組み合わせた2つの文字から構成されています

文字列の比較

ここでは、countif関数とワイルドカードを使わない方法を紹介します。

セルに入力されている値が「Z」で始まる場合

=if(left(A1,1)="Z", ... , ...)

セルに入力されている値が「Z」で終わる場合

=if(right(A1,1)="Z", ... , ...)

セルに入力されている値が「Z」を含む場合

=if(iferror(find("Z",A1),0)>0, ... , ...)

countif・ワイルドカードを使ったあいまい検索

countif関数を使って、ワイルドカードを使った表現にすると次のようになります。

Zで始まる:
=if(countif(A1,"Z*")>=1, ... , ...)

Zで終わる:
=if(countif(A1,"*Z")>=1, ... , ...)

Zを含む:
=if(countif(A1,"*Z*")>=1, ... , ...)

空欄、ブランク関連

セルに値が入力されていない場合(=ブランクの場合)

=if(A1="", ... , ...)

※ダブルクォーテーション「"」を2つ続けて入力します

セルに値が入力されている場合(=ブランクでない場合)

=if(A1<>"", ... , ...)

※「<>」は、小なり「<」と大なり「>」を組み合わせた2つの文字から構成されています
※ダブルクォーテーション「"」を2つ続けて入力します

年月日の比較

A1セルに日付が「シリアル値」の状態で入っている場合、次のようにして比較します。

2016/5/1と等しい場合

=if(A1=date(2016,5,1), ... , ...)

2016/5/1より前の場合

=if(A1<date(2016,5,1), ... , ...)

※「<」の後に「=」を付けると、2016/5/1「以前」という条件を表現できます。

2016/5/1より後の場合

=if(A1>date(2016,5,1), ... , ...)

※「>」の後に「=」を付けると、2016/5/1「以降」という条件を表現できます。

年月の比較

2016年5月と等しい場合(指定した年月と等しい場合)

=if(and(year(A1)=2016,month(A1)=5), ... , ...)

※年が2016と等しく月が5と等しければ、2016年5月です。

2016年5月と等しくない場合(指定した年月と等しくない場合)

=if(or(year(A1)<>2016,month(A1)<>5), ... , ...)

※年が2016と等しくないか、月が5と等しくないかの「どちらか」を満たしていれば、2016年5月ではありません。

2016年5月より前の場合(指定した月より前の場合)

=if(A1<date(2016,5,1), ... , ...)

※2016年5月1日より前であれば、2016年5月より前になります。

2016年5月以前の場合(指定した月以前の場合)

=if(A1<date(2016,5+1,1), ... , ...)

※2016年6月1日より前であれば、2016年5月以前となります。

2016年5月より後の場合(指定した月より後の月の場合)

=if(A1>=date(2016,5+1,1), ... , ...)

※2016年6月1日と等しいか、それより後であれば、2016年5月より後の月となります。

2016年5月以降の場合(=指定した月以降の場合)

=if(A1>=date(2016,5,1), ... , ...)

※2016年5月1日と等しいか、それより後であれば、2016年5月以降の月となります。

その他、年月日関連の比較

2016年と等しい場合(指定した年と等しい場合)

=if(year(A1)=2016, ... , ...)

※等号の変わりに不等号を使えば、2016年と等しくない「<>」、2016年より前「<」、2016年以前「<=」、2016年より後「>」、2016年以降「>=」も表現できます

5月と等しい場合(指定した月と等しい場合)

=if(month(A1)=5, ... , ...)

※等号の変わりに不等号を使えば、5月と等しくない「<>」、5月より前「<」、5月以前「<=」、5月より後「>」、5月以降「>=」も表現できます

20日と等しい場合(指定した日と等しい場合)

=if(day(A1)=20, ... , ...)

※等号の変わりに不等号を使えば、20日と等しくない「<>」、20日より前「<」、20日以前「<=」、20日より後「>」、20日以降「>=」も表現できます

複雑な条件編

1以上10未満の場合(範囲の指定)

=if(and(A1>=1,A1<10),【A1が1以上10未満のとき】,【それ以外のとき】))

0.8以下または1.2以上の場合(著増減の判定)

=if(or(A1<=0.8,A1>=1.2),【0.8以下または1.2以上のとき】,【それ以外のとき】))

1のときは・・・、2のときは・・・、それ以外のときは・・・(複数条件)

=if(A1=1,【A1が1のとき】,if(A2=2,【A1が2のとき】,【それ以外のとき】))

Aのときは・・・、Bのときは・・・、それ以外のときは・・・(複数条件)

=if(A1="A",【A1がAのとき】,if(A2="B",【A1がBのとき】,【それ以外のとき】))

実践編

エラーの場合

=if(iserror(A1),【エラーのときの処理】,【エラーでないときの処理】)

vlookup関数で検索値が存在しない場合

vlookup関数で検索値が存在しない場合には空欄を表示させます。

=if(iserror(vlookup( ... )),"",vlookup( ... ))

※iferror関数を使って次のように書くほうが簡単です。

=iferror(vlookup( ... ),"")

割り算ができない場合

例えば、A1セル÷B1セルを計算したいとき。

=if(B1=0,【割り算ができないときの処理】, A1/B1 )

※B1セルが0の場合は、エラーになってしまうので、その場合だけ除外します。

プラスマイナス0.2以上の場合

=if(abs(A1)>=0.2, ... , ...)

プラスマイナス20%以上の場合(パーセンテージを使った条件の指定方法)

=if(abs(A1)>=20%, ... , ...)

※計算式中にパーセントマーク「%」を使えます

偶数の場合

=if(mod(A1,2)=0, ... , ...)

奇数の場合

=if(mod(A1,2)=1, ... , ...)

整数の場合(=小数部分がない場合)

=if(int(A1)=A1, ... , ...)

小数部分がある場合

=if(int(A1)<>A1, ... , ...)

桁数が3桁の場合

=if(int(log10(A1))=3, ... , ...)

文字数が3文字の場合

=if(len(A1)=3, ... , ...)

大文字・小文字の区別を無視して「ABC」に一致する場合

=if(upper(A1)=upper("ABC"),【一致する場合】,【一致しない場合】)

※今回は、条件式の右辺は元々大文字なのでupper関数は不要ですが、つけておけば間違いはありません。

全角・半角の区別を無視して「アイウ」に一致する場合

=if(jis(A1)=jis("アイウ"),【一致する場合】,【一致しない場合】)

※今回は、条件式の右辺は元々全角文字なのでjis関数は不要ですが、つけておけば間違いはありません。

指定したデータがリスト内に存在している場合

A8セルに入力された値が、A1セル~A7セルまでに存在するかどうか調べる場合

=if(countif(A1:A7,A8)>=1,【リスト内に存在している場合】,【存在していない場合】)

※実際に使う場合には「A1」ではなく「A$1」というように、絶対参照のマーク「$」をつけるケースが多いです。

月末の日付である場合

A1セルにシリアル値が入っている場合に、次の式で月末の日付かどうか判定します。

=if(month(A1+1)<>month(A1),【月末の場合】,【月末でない場合】)

※A1セルの翌日が何月かを調べ「month(A1+1)」、それがA1セルが何月か「month(A1)」と一致していなければ、月末と判断しています。

土曜日か日曜日の場合(weekday関数とif関数使用)

A1セルにシリアル値が入っている場合に次の式で土曜日・日曜日の判定ができます。

=if(weekday(a1,2)>=6,【土曜日・日曜日の場合】,【それ以外の場合】)

うるう年の場合

A1セルに年が数値で入っている場合に、次の計算式でうるう年かどうか判定します。

=if(month(date(A1,2,29))=3,【うるう年の場合】,【うるう年でない場合】)

※A1セルの翌日が何月かを調べ「month(A1+1)」、それがA1セルが何月か「month(A1)」と一致していなければ、月末と判断しています。

残業(=1日8時間以上の労働)をしている場合

A1セルにシリアル値で時間が入っている場合、次の計算式で残業をしているかどうか判定します。

=if(A1>=time(8,0,0),【残業をしている場合】,【残業をしていない場合】)

※誤差の影響で8時間に近い場合に、残業をしている・していないの判定が狂う可能性があります。

正確に判定したい、という場合には、次のような計算式のほうがいいかもしれません。

=if(A1>=time(7,59,59.9999),【残業をしている場合】,【残業をしていない場合】)

具体的な使用例

 

0のときは空白にする

=if(A1=0,"", ... )

年度の計算をする

2015年4月~2016年3月 → 2015年度とすると、
A1セルに年・B1セルに月が入っているとして、次の計算式で年度を計算できます。

=if(B2<=3,A2-1 , A2)

詳細は、年度を表示するエクセルの関数をご覧ください。

まとめ

最後のほうは50個にするため、無理矢理になってしまいましたが、よくあるパターンは出せたのではないかと思います。

ぜひ、参考にしてください!

エクセル基礎講座 「無料」動画マニュアル

「経理事務のためのエクセル基礎講座(初級編)」(動画マニュアル 総収録時間162分)を無料プレゼント中です!

このマニュアルで解説していることを一通り学べば、経理事務を行う上で最低限必要となる知識が得られます。

ご登録者の方には、合わせて、公認会計士が実体験を通して身に付けたエクセルを使う技をメールにてお伝えしていきます!

無料動画講座 登録フォーム

※ご登録頂いたメールアドレスに、エクセルを使いこなすための情報を配信するメールセミナー「エクセル倍速講座」も合わせて配信させていただきます。