if関数は全ての基本。sumif関数なんかよりずっと大事だよ。
if関数よくわからない、という意見が多いようです。
でも、この意見は、ある意味当たり前で、
if関数は、(極端に言うと)なんでもできてしまう「超基礎的な」関数なので、固定的なイメージをつけようがないのです。
ですから、わかりにくいと感じるのも、ある意味自然です。
この記事の目次
if関数で他の関数を表現する
今回は、if関数が「なんでもできる」ことを証明するために、「他の関数をif関数で表現」してみます。
一見、あまり意味がないように思えるかもしれませんが、
- 「if関数に慣れる」
- 「どういう場面でif関数を使えばいいのか判断力を養う」(=if関数の応用力をつける)
という意味では、今回のように、様々なことをif関数を使ってロジックを表現する練習は有用です。
abs関数はif関数で表現できる
まず、最初に典型的な例として、絶対値を取る関数である「abs関数」を考えてみたいと思います。
abs関数は、どういう動きをするかというと、例えば、A1セルに数字が入っている場合に、
- (A1セルが)正の数か0のときは、そのままの値を返す
- (A1セルが)負の数のときは、その符号をプラスにした値を返す
という動作をします。
「if関数」を使うべき、お手本のような事例だ、ということがわかると思います。
上のロジックをそのままif関数で置き換えると、
となります。
当然、下記abs関数を使った計算式と同じ動作をすることになります。
min関数(最小値を選ぶ)はif関数で表現できる
最小値を選ぶmin関数もif関数で書けます。
たとえば、2つの値(A1セルとB1セル)の最小値を求める場合、
- A1セル>B1セルならば、B1セルの値を返す
- A1セル≦B1セルならば、A1セルの値を返す
というロジックで求められます。
if関数で表現すれば、
となりますが、min関数を使った下記の表現と全く同じ意味になります。
4つのセルの最小値をif関数で求めてみる ※実用性なし
値が3つ以上の場合でも、if関数で表現はできますが、異常に面倒になるので、if関数を使って書く実益はないです(笑)。
でも、ロジックの勉強にはいいかな、とも思います。
例えば、
A1,B1,C1,D1の中で最小の値を取得するならば、
で書けます(たぶん)。
正直、全く実用性はないですけど(笑)。こういう式を書けるようになるとif関数を使いこなせてるといってもいいのかな、と思います。
なお、作業用セルを使ってもいいようであれば、もっともっと簡単に表現できます。
腕に覚えのある方はチャレンジしてみてください。
sumifs関数もif関数で表現できる
実用性ある話に戻ると、sumifs関数も、作業用のセルが必要ですが、if関数を使って表現できます。
例えば、
- A2~A100セルまでに「部署コード」
- B2~B100セルまでにそれぞれの部署に属する「売上高」
が入っているとしましょう。
「部署コード」が「5」の部門の売上高合計を知りたい、という場合。
もちろん、次のような数式を入れれば、合計を取ることができます。
これをif関数でやってみましょう。
まず、C2セルに
と入れた後、C2セルの内容をC3セル~C100セルまでコピー。
この段階で、
- 部門コード5の行のC列には、B列の値がコピーされている
- 部門コード5で「ない」行のC列には「0」が入力されている
状態です。
つまり、C2~C100セルまでには、部門コード5に属する売上高「だけ」が抽出されていることになります。
ですから、どこかのセルに、
といれれば、sumifs関数を使うのと、同じ結果が出てくるわけです。
sumifs関数の弱点
これだけの話なら、sumifs関数のほうが便利だから、if関数を使って表現する理由はないのですが。
sumifs関数での集計には1つ弱点があります。
それは、
sumif関数では、あらかじめ想定されている「条件」しか指定できない
ということです。
sumifs関数を使うと、あらかじめ想定された条件しか指定できないため、どうしても「or条件」などの指定しにくい「条件」が出てきてしまいます。
そんなときに、if関数を使った表記法ができれば、すごーく楽なんです。
if関数での「条件の指定」はかなり汎用的ですから、「ワークシート関数で表現できる条件」は、なんでも書けます。
ダブルクォーテーションの中に、あらかじめ定められた条件しか書けないsumifsとは、自由度が全然違うんですね。
しかも、C列を見れば、どの列が条件を満たしているのか一目瞭然(「0」になっていない行は、条件を満たしていることがわかる)なので、条件式の入力間違いに、気づく確率も高くなります。
このように、条件が複雑になればなるほど、sumif関数よりもif関数を使う記述法のほうが「楽」になります。
特定用途の便利な関数よりも、汎用の関数を覚えたら?
ということで、今回の記事のまとめです。
エクセルを本気で使いこなしたい、と思うのであれば、
「特定の用途にしか使えない便利関数(sumifsとか)」
よりも、
「なんにでも使える関数(ifとか)」
を積極的に使っていったほうがいいんじゃないのかな?と思うわけです。
もちろん、sumifsを使うな、と言っているわけではなく。使える場面では積極的に使えばいいと思います。
ただし、その一方で、常に、自分の手持ちの知識(知っている関数)で、どうにかできないかな?と考え続けることが大事なんじゃないか、と思うわけです。
そういう姿勢を貫いていると、応用力がついてきます。
結果、一見遠回りに見えますが、最終的には、エクセルで、なんでもできるようになるんじゃないかな、、と思います。