本連載の第168回では「もう一度、ピボットテーブルに挑戦しませんか」という話をお伝えしました。今回も引き続きExcelにフォーカスして、昔からExcelを使っている人も関数を学び直すメリットついてお話します。
事務系の仕事をされている方の業務と切っても切り離せないExcel。毎日Excelを駆使して業務をしている方の多くはピボットテーブルと共に関数を多用されているかと思います。その関数ですが、Excelのバージョンアップと共に実は地味に種類が増えていっています。
このようにお話すると、
「いやいや、今使っている関数で事足りているのだから、今さら新しい関数を覚える必要なんてないよ」
という声が聞こえてきそうです。そのお気持ちはよく分かりますし、私自身もそうでした。しかし、ちょっとしたことがきっかけで新しい関数を調べて使ってみると、それまで手間がかかっていた処理が楽になることが多々ありました。そこで、ここでは比較的新しく登場した関数の一部を紹介します。既に関数を駆使されている方なら、すぐに使いこなせるはずです。
速攻でマスターして、その効用を皆さんにも味わっていただきたいと思います。
No.1 IFS関数
関数といえば、SUM関数と並んで最もよく使われるものの一つにIF関数があります。IF関数はご存知のとおり「もしXXXならYYY、そうでなければZZZ」という条件分岐の処理を行う際に使いますが、これが「もしAAAならBBB、もしCCCならDDD、もしEEEならFFF・・」というように条件分岐の数が多くなればなるほど、IF関数をどんどん入れ子にしていくことになります。そして気が付くと、入れ子が増えすぎてしまい、一目見ただけではどのような条件分岐になっているかを把握しにくくなってしまいます。
では、具体的な例で見てみましょう。
「セルA1の値が70以上なら"特大"、 セルA1の値が50以上なら"大",セルA1の値が30以上なら"中"、それ以外は"小」
こちらの処理は、IF関数を使うと次のとおりの記述になります。
=IF(A1>=70,"特大",IF(A1>=50,"大",IF(A1>=30,"中","小")))
関数が入れ子になっていて、ちょっと分かりにくいですね。この困りごとを解決してくれるのがIFS関数です。IFS関数なら、同じように多くの条件分岐があっても入れ子にはなりません。
先ほどと同じ処理はIFS関数で次のように記述することで実現できます。
=IFS(A1>=70,"特大",A1>=50,"大",A1>=30,"中",A1<30,"小")
こちらは「条件1、処理1、条件2、処理2、条件3、処理3……」と続いていくのでとてもシンプルな作りになりますね。但し一点、注意が必要です。IF関数では「条件に該当しない場合」、つまり「その他」の場合の処理を書きますが、IFS関数では「その他」というものがないので全ての条件を明記する必要があります。ご留意ください。
No.2 IFERROR関数
こちらもIF関数の派生形です。関数を使用していると予期せぬ値のせいなどでエラーが表示されることが多々あります。その際、エラーをISERROR関数(セルの内容がエラー値の場合にTRUEを返す)、ISERR関数(セルの内容が #N/A以外のエラー値の場合にTRUEを返す)、ISNA関数(セルの内容がエラー値 #N/Aの場合にTRUEを返す)などをIF関数に組み込んでエラーの場合の処理を行うことがよくあります。
たとえば、A1からA23のセルに東京都の23区の名称が入っていて、その隣に該当する区の人口が入っている表があったとします。その中からVLOOKUP関数を用いて指定した区の人口を検索するという関数を作ったとします。そこで「千代田区」の人口を検索する場合、関数は次のとおりになります。
=VLOOKUP("千代田区",A1:B23,2,FALSE)
これで「千代田区」という文字列をA1からA23の中から検索し、該当する行の2列目にある人口を表示させることができます。
しかし、仮に検索対象の表の作成で誤って「千代田区」という文字列が失われていたとすると、上記の関数では #N/A と表示されてしまいます。そこで、エラーの場合に #N/A の代わりに「見つかりませんでした」と表示させたい場合には、IF関数では次のような記述になります。
=IF(ISNA(VLOOKUP("千代田区",$A$1:$B$23,2,FALSE))=TRUE,"見つかりませんでした",VLOOKUP("千代田区",$A$1:$B$23,2,FALSE))
随分と複雑な記述になりましたね。IF関数では、どうしてもこのように同じVLOOKUP関数を二度記述しなければエラー時の処理を行うことができませんでした。そこでIFERROR関数の出番です。IFERROR関数では、同じ処理を次のように記述できます。
=IFERROR(VLOOKUP("千代田区",$A$1:$B$23,2,FALSE),"見つかりませんでした")
IFERROR関数では、「=IFERROR(値, エラーの場合)」というシンプルな作りになっているので、VLOOKUP関数を2回書く必要がないのです。これは無論、VLOOKUP関数だけに当てはまるわけではなく、その他の関数でもエラー処理を入れたい場合には使えるのでぜひお試しください。
No.3 SUMIFS関数
最後に紹介する関数はSUMIFS関数です。こちらについては以前から「条件に当てはまる数値を合計する」というSUMIF関数はありました。これはこれで使い勝手がよいのですが条件を1つしか設定することができず、複数条件に当てはまる数値の合計は困難でした。
しかし、SUMIFS関数の登場によって複数条件に合致する値の合計値を簡単に導けるようになりました。例えば商品別・地域別の売上データの集計をケースに取り上げると、2行目から1000行目までのA列に商品名、B列に都道府県、C列に売上のデータがそれぞれ入っている表があったとします。そこから「愛知県における商品Xの売上データの合計値」を求める場合、SUMIFS関数を使うと次のように記述できます。
=SUMIFS(C2:C1000,A2:A1000,"商品X",B2:B1000,"愛知県")
こちらのようにシンプルな記述で集計できます。なお、SUMIFS関数では「=SUMIFS(合計対象範囲,条件範囲1,条件1,条件範囲2,条件2,条件範囲3,条件3)」というように記述します。もちろん、条件を4つ、5つと増やしていくことも可能です。
但し一点、注意しなければならないのはSUMIF関数では「合計対象範囲」を最後に記述していたものを、SUMIFS関数では最初に記述するというところが異なる点です。これは間違いやすいので気を付けましょう。
いかがでしたでしょうか。昔からExcelを使っているという方の中には知らないものも含まれていたかもしれません。これを機に新しい関数にもチャレンジしていただけましたら幸いです。