よく使うEXCELの関数集8(情報関数)

情報関数

前回はデータベース関数のご紹介をいたしました。

今回はEXCEL表上の情報を利用する方法をご紹介します。
と言ってもイメージがわかないかと思いますので、簡単にご説明すると、例えば同じセルの内容を別のセルに表示させたいとします。
その場合、表示させたい箇所に表示させたい元のセルを=B3のように記載すれば表示できます。

ただ、参照される元のセルが[#DIV/0!][#N/A][#NAME?][#NULL!][#NUM!][#REF!][#VALUE!]のようなエラーだった場合、この値は表示したくないという事もあるかと思います。

こういった場合にIF関数と組み合わせて使用するとエラーの場合は0とするとか、空白とするというように変換して表示できます。

エラーかどうかを判定する(ISERROR、ISERR、IFERROR)

ISERROR  : 指定したセルの関数の結果がエラーかどうかを判定する
 使用方法  : (判定したいセル)
 使用例   : =ISERROR(D7)
 ※ISERRはISERRORの省略形ですので、どちらでも動作は同じです。

 ISERROR単体で利用することはあまりないので、IF関数と組み合わせた使用方法で説明します。
 ↓
【説明】
 まず、VLOOKUP関数などで完全一致検索を行い、見つかった場合にその値を表示する関数をD列に記載したとします。
 このとき検索元のB5セルの値「3」は検索先のC列に存在しないので「#N/A」というエラーが表示されます。
 ISERROR関数ではこのエラーを検知すると、返り値として「TRUE」を返します。
 TRUEとは真という意味ですので、IF関数の中で使用すると条件が一致したとみなされます。

 例えば=IF(B3=C3,”一致”,”不一致)とした場合、B3セルとC3セルの値は一致しているのでTRUE(真)が返ってきます。
 ということはこのIF関数ではTRUE(真)のケースの文字が表示されるので「一致」が表示されますよね。

 同じように=IF(ISERROR(D5),$B$14,D5)と記載すると、D5セルの値は「#N/A」ですので、TRUE(真)となり、$B$14の値「10」を表示しなさいという関数になります。
 また、エラーではない場合FALSE(偽)が返ってくるのでD列の値を表示しなさいという命令になりD列セルの値がそのまま表示されます。

IFERROR : 指定したセルの値がエラーだった場合に指定した値を表示する
 使用方法  : (判定したいセル, エラーだった時に表示する値)
 使用例   : =IFERROR(D7,0)

【説明】
 下記の例だとISERRORと同じ結果が得られますが(エラーだった時に表示する値はセルを指定することもできます)
 判定したいセルがエラーではなかった場合に、IFERROR関数では判定したいセルの値しか表示することができません。
 IF関数とISERROR関数を組み合わせた場合エラーではなかった場合は、FALSE(偽)の判定条件に移りますので、他のセルの値を表示したりできますが、IFERROR関数ではそれができません。

★Tips★簡単に使いたいならIFERROR、条件を複雑に出来るIF+ISERROR

一覧の中からエラーだったセルは一律この値を表示したい、そうでないものは元のセルの値を表示したいという簡単な使い方であれば、IFERRORで十分です。

しかし、エラーだった場合、エラーでなかった場合それぞれで表示するセルを変えたい、別な関数をTRUE(真)やFALSE(偽)のケースで記載したいという場合にはIF+ISERRORが良いでしょう。
※ IF+ISERROR の方がプログラムっぽい判定のさせ方なのでこの先を目指している方は是非覚えておいてください。

特定のエラーを判定する(ISNA)

ISNA     : 「#N/A」エラーかどうかを判定する
 使用方法  : (判定したいセル)
 使用例   : =ISNA(D7)
 
【説明】
 上記ISERRORと同じですが、[#DIV/0!][#N/A][#NAME?][#NULL!][#NUM!][#REF!][#VALUE!]のうち[#N/A]の場合のみTRUE(真)を返します。

こちらの関数もIF関数と組み合わせて使用するのが一般的です。

空白かどうかを判定する(ISBLANK)

ISBLANK   : 指定しセルが空白かどうかを判定する
 使用方法  : (判定したいセル)
 使用例   : =ISBLANK(D7)

【説明】
 ISERRORやISNAと使い方は同じですが、空白の時のみTRUE(真)を返します。
 ※セルの値が空の時のみTRUE(真)を返します。
  例えばセル内に半角スペースや全角スペースのみが入っていた場合は空白とはみなされずFALSE(偽)となりますのでご注意ください。

セルの値が文字列かどうかを判定する(ISTEXT、ISNONTEXT)

ISTEXT   : 指定しセルが文字列かどうかを判定する
 使用方法  : (判定したいセル)
 使用例   : =ISTEXT(B7)

【説明】
 判定したいセルの値が文字列だった場合にTRUE(真)を返します。
 下記の例だとB3セルとB7セルが文字列なのでTRUEとなっています。

ISNONTEXT  : 指定しセルが文字列ではないかどうかを判定する
 使用方法   : (判定したいセル)
 使用例    : =ISNONTEXT(B7)

【説明】
 ISTEXTと全く逆の判定結果が返ってきます。
 どちらでも使いやすい方を使っていただいてよいと思います。

セルの値が数値かどうかを判定する(ISNUMBER)

ISNUMBER : 指定しセルが数値かどうかを判定する
 使用方法  : (判定したいセル)
 使用例   : =ISNUMBER(B7)

【説明】
 判定したいセルの値が数値だった場合にTRUE(真)を返します。
 ISNONTEXTと同じ結果が返ってきますのでどちらで覚えてもよいと思いますが、複雑にネストするIF関数などでは、ISNUMBERで記載したほうがわかりやすくなると思いますので、どちらか一方であればISNUMBERの方を覚えておいた方が良いと思います。

セル内の数式を表示する(FORMULATEXT)

FORMULATEXT : 指定しセルに記載された数式を表示する
 使用方法  : (数式を表示したいセル)
 使用例   : =FORMULATEXT(B7)

【説明】
 実は上記で説明用に記載したD列ですが、下記のようにこの関数を使っていました。
 C列に記載された内容をD列にFORMULATEXTを利用して表示していたんですね。
 このように関数を説明する必要がある場合や、内容を確認する必要がある場合に便利な関数です。

★Tips★セルの中に&を記載すると文字列や関数をつなげることができる

以前も簡単に&のご紹介をさせて頂きましたが、
上記の例で「=”←” & FORMULATEXT(C3)」と記載している箇所を改めて分解して説明します。
まず関数や文字列を連携(&でつなげる)場合はセルの先頭に「=」を記載します。
これはこのセルに通常の文字や数字以外を入れていくぞという宣言みたいなものと覚えてください。

次に “←” ですが、 “” はこの中に入っているものは文字列ですよという宣言です。
数字の場合は “” を記載する必要はありませんが、文字列の場合はルールと覚えてしまったほうが良いです。

この “” の中にある「←」が表示する文字列になります。

この後に & で結合してFORMULATEXTの関数を記載するとD列のように矢印を先頭に表示させてからその後に関数の結果を表示できます。
※&は関数の後にも記載出来ますので関数の結果の後に文字を表示することもできます。

★Tips★実践編(関数の組み合わせ)

少し実践的な関数について解説します。

例えば下記の関数は商品名に付いている情報に基づいて割引かどうかを表示する関数になります。
=IF(Q2=””,””,IF(ISERROR(FIND(“【セール】”,Q2,1)) = TRUE,”通常”,”割引”))


まず、Q2のセルが空欄だったら何も表示しないように先頭のIF関数で設定しています。
もし空欄じゃない場合は次のIF関数に入りFIND関数の結果がエラーかどうかを判定し、エラーだった場合は「通常」と表示、エラーだった場合は「割引」と表示します。

ISERROR(FIND(“【セール】”,Q2,1)) = TRUEという判定文はまずFINDでQ2セルに【セール】という文字が見つかった場合はその文字位置を返しますが、見つからなかった場合は「#VALUE!」というエラーを返します。
そのためISERRORが判定する結果は見つからなかった場合にTRUEを返すとなり、そのIF関数の判定は結果はTRUE(真)となり最初の「通常」を表示するとなります。

このように関数を組み合わせることによってかなり複雑なこともできます。

細かく解説はしませんが、下記のように複雑に条件を指定して入荷日などを表示させることもできます。
=IF(ISERROR(IF(AND(BB2=”0″, OR(AL2=”LIBRARY”,AL2=”Platinum Animation”,AL2=”Premium Library window”,AL2=”:LBR MEGA”,AL2=”Other”,AL2=”Additional (library)”,AL2=”TV Special Library”,AL2=””)),””,IF(AND(BB2=”0″, OR(AL2=”LIBRARY”,AL2=”Platinum Animation”,AL2=”Premium Library window”,AL2=”:LBR MEGA”,AL2=”Other”,AL2=”Additional (library)”,AL2=”TV Special Library”)),””,IF(一般在庫表!AC5=””,””,INT(一般在庫表!AC5)+”23:59:59″)))),”在庫表の日付が誤っています”,IF(AND(BB2=”0″, OR(AL2=”LIBRARY”,AL2=”Platinum Animation”,AL2=”Premium Library window”,AL2=”:LBR MEGA”,AL2=”Other”,AL2=”Additional (library)”,AL2=”TV Special Library”,AL2=””)),””,IF(AND(BB2=”0″, OR(AL2=”LIBRARY”,AL2=”Platinum Animation”,AL2=”Premium Library window”,AL2=”:LBR MEGA”,AL2=”Other”,AL2=”Additional (library)”,AL2=”TV Special Library”)),””,IF(一般在庫表!AC5=””,””,IF(A2=”株式会社ABC”,””,INT(一般在庫表!AC5)+”23:59:59″)))))

いかがでしたでしょうか?
これでよく使うEXCEL関数は終了です。

ここまで関数が使えれば一般的な事務作業では相当な省力化が図れるはずです。

また、関数は単体で使う事でも効率化を図れますが、複雑に組み合わせることによって更に効率化させたりミスを無くしたりすることが可能です。

関数で記載すると一行に書かなければならないので非常に見づらくなり作りづらいのですが、VBAを利用するともっと見やすく簡単に書けますので、後のVBAのご紹介で便利さを実感いただきたいと思います。

次回はついにVBAのご説明!と行きたいのですが、その前にデータベース(SQL)について少し説明をしておきますので、次回はデータベースのご説明を中心にご紹介いたします。

では、次回をお楽しみに。