if関数は全ての基本。sumif関数なんかよりずっと大事だよ。

if関数よくわからない、という意見が多いようです。

でも、この意見は、ある意味当たり前で、
if関数は、(極端に言うと)なんでもできてしまう「超基礎的な」関数なので、固定的なイメージをつけようがないのです。

ですから、わかりにくいと感じるのも、ある意味自然です。

if関数で他の関数を表現する

今回は、if関数が「なんでもできる」ことを証明するために、「他の関数をif関数で表現」してみます。

一見、あまり意味がないように思えるかもしれませんが、

  • 「if関数に慣れる」
  • 「どういう場面でif関数を使えばいいのか判断力を養う」(=if関数の応用力をつける)

という意味では、今回のように、様々なことをif関数を使ってロジックを表現する練習は有用です。

abs関数はif関数で表現できる

まず、最初に典型的な例として、絶対値を取る関数である「abs関数」を考えてみたいと思います。

abs関数は、どういう動きをするかというと、例えば、A1セルに数字が入っている場合に、

  • (A1セルが)正の数か0のときは、そのままの値を返す
  • (A1セルが)負の数のときは、その符号をプラスにした値を返す

という動作をします。
「if関数」を使うべき、お手本のような事例だ、ということがわかると思います。

上のロジックをそのままif関数で置き換えると、

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

となります。

当然、下記abs関数を使った計算式と同じ動作をすることになります。

=abs(A1)

min関数(最小値を選ぶ)はif関数で表現できる

最小値を選ぶmin関数もif関数で書けます。
たとえば、2つの値(A1セルとB1セル)の最小値を求める場合、

  • A1セル>B1セルならば、B1セルの値を返す
  • A1セル≦B1セルならば、A1セルの値を返す

というロジックで求められます。

if関数で表現すれば、

=if(A1>B1,B1,A1)

となりますが、min関数を使った下記の表現と全く同じ意味になります。

=min(A1,B1)

4つのセルの最小値をif関数で求めてみる ※実用性なし

値が3つ以上の場合でも、if関数で表現はできますが、異常に面倒になるので、if関数を使って書く実益はないです(笑)。
でも、ロジックの勉強にはいいかな、とも思います。

例えば、
A1,B1,C1,D1の中で最小の値を取得するならば、

=IF(A1>B1,IF(C1>D1,IF(B1>D1,D1,B1),IF(B1>C1,C1,B1)),IF(C1>D1,IF(A1>D1,D1,A1),IF(A1>C1,C1,A1)))

で書けます(たぶん)。

正直、全く実用性はないですけど(笑)。こういう式を書けるようになるとif関数を使いこなせてるといってもいいのかな、と思います。

なお、作業用セルを使ってもいいようであれば、もっともっと簡単に表現できます。

腕に覚えのある方はチャレンジしてみてください。

sumifs関数もif関数で表現できる

実用性ある話に戻ると、sumifs関数も、作業用のセルが必要ですが、if関数を使って表現できます。

例えば、

  • A2~A100セルまでに「部署コード」
  • B2~B100セルまでにそれぞれの部署に属する「売上高」

が入っているとしましょう。

「部署コード」が「5」の部門の売上高合計を知りたい、という場合。

もちろん、次のような数式を入れれば、合計を取ることができます。

=sumifs($B$2:$B$100,$A$2:$A$100,5)

これをif関数でやってみましょう。

まず、C2セルに

=if(A2=5,B2,0)

と入れた後、C2セルの内容をC3セル~C100セルまでコピー。

この段階で、

  • 部門コード5の行のC列には、B列の値がコピーされている
  • 部門コード5で「ない」行のC列には「0」が入力されている

状態です。

つまり、C2~C100セルまでには、部門コード5に属する売上高「だけ」が抽出されていることになります。

ですから、どこかのセルに、

=sum(C2:C100)

といれれば、sumifs関数を使うのと、同じ結果が出てくるわけです。

sumifs関数の弱点

これだけの話なら、sumifs関数のほうが便利だから、if関数を使って表現する理由はないのですが。
sumifs関数での集計には1つ弱点があります。

それは、
sumif関数では、あらかじめ想定されている「条件」しか指定できない
ということです。

sumifs関数を使うと、あらかじめ想定された条件しか指定できないため、どうしても「or条件」などの指定しにくい「条件」が出てきてしまいます。

そんなときに、if関数を使った表記法ができれば、すごーく楽なんです。

if関数での「条件の指定」はかなり汎用的ですから、「ワークシート関数で表現できる条件」は、なんでも書けます。

ダブルクォーテーションの中に、あらかじめ定められた条件しか書けないsumifsとは、自由度が全然違うんですね。

しかも、C列を見れば、どの列が条件を満たしているのか一目瞭然(「0」になっていない行は、条件を満たしていることがわかる)なので、条件式の入力間違いに、気づく確率も高くなります。

このように、条件が複雑になればなるほど、sumif関数よりもif関数を使う記述法のほうが「楽」になります。

特定用途の便利な関数よりも、汎用の関数を覚えたら?

ということで、今回の記事のまとめです。

エクセルを本気で使いこなしたい、と思うのであれば、
「特定の用途にしか使えない便利関数(sumifsとか)」
よりも、
「なんにでも使える関数(ifとか)」
を積極的に使っていったほうがいいんじゃないのかな?と思うわけです。

もちろん、sumifsを使うな、と言っているわけではなく。使える場面では積極的に使えばいいと思います。

ただし、その一方で、常に、自分の手持ちの知識(知っている関数)で、どうにかできないかな?と考え続けることが大事なんじゃないか、と思うわけです。

そういう姿勢を貫いていると、応用力がついてきます。

結果、一見遠回りに見えますが、最終的には、エクセルで、なんでもできるようになるんじゃないかな、、と思います。

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

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

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

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

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

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