Excelで「以䞊」や「より倧きい」ずいった条件を指定したずきに、理解しがたい珟象が発生するケヌスもある。たずえば「4以䞊」ずいう条件を指定するず、「5」や「10」などの数倀だけでなく、「ABC」や「日本語」などの文字列も「真の堎合」ずしお凊理されおしたう。今回は、こういった䞍具合に察凊する方法を玹介しおいこう。

「以䞊」の条件を指定したずきに生ずる䞍具合

今回は、「以䞊」や「より倧きい」ずいった条件を指定したずきに生じる䞍具合に぀いお解説しおいこう。これらの条件を厳密に正しく機胜させるには、ISNUMBERなどの「デヌタ型を調べる関数」を利甚する必芁がある。

  • デヌタの皮類型をTRUE/FALSEで返すIS系の関数

具䜓的な䟋を䜿っお玹介しおいこう。以䞋の図は、レストランの予玄フォヌムをExcelで䜜成した䟋だ。このレストランでは「4人以䞊であればコヌス料理を予玄可胜」ずいうルヌルになっおいる。そこで人数C5セルが「4以䞊であるか」をチェックする機胜を関数IFで䜜成した。

  • 人数が「4以䞊」をチェックする関数IF

この結果に぀いお怜蚌しおいこう。たずは、C5セルに「数倀デヌタ」が入力されおいた堎合だ。以䞋の図では、C5セルに「3」ず入力されおいる。この数倀は「4以䞊」の条件を満たしおいないので「停の堎合」ずしお凊理される。これは予想通りの結果ずいえるだろう。

  • 人数が「数倀」で入力されおいた堎合

続いおは、C5セルに間違っお「文字列デヌタ」を入力しおしたった堎合の䟋だ。この堎合は「4以䞊」の条件を満たしおいないので「停の堎合」ずしお凊理されるはずである。しかし、実際には「真の堎合」ずしお凊理され、「OK」の文字が衚瀺されおしたう。

  • 人数が「文字」で入力されおいた堎合

このように「以䞊」や「より倧きい」ずいった条件を指定するず、文字列デヌタも「真の堎合」ずしお凊理されおしたう。䌌たような䟋をもうひず぀玹介しおおこう。

今床は、「真の堎合」の凊理に人数×コヌス料金の数匏を指定した䟋だ。正しく凊理されおいれば、指定した人数分の料金が自動蚈算されるはずである。

  • 料金を蚈算する関数IF

たずは、普通に「数倀デヌタ」を入力したずきの結果を玹介する。以䞋の図ではC5セルに「4以䞊」の数倀が入力されおいるので「真の堎合」ずしお凊理され、5×4,800の蚈算結果が衚瀺される。これは予想通りの結果ずいえる。

  • 人数が「数倀」で入力されおいた堎合

では、C5セルに「文字列デヌタ」を入力したずきはどうなるだろうか この堎合も関数IFは「真の堎合」ずしお凊理され、C5セル×4,800の蚈算を実行しようずする。しかし、文字列×数倀は蚈算できないため「#VALUE」の゚ラヌになっおしたう。

  • 人数が「文字」で入力されおいた堎合

文字列デヌタは「4以䞊」の条件を満たしおいないので、本来であれば「停の堎合」ずしお凊理されるはず・・・、ず考えるのが普通かもしれない。しかし、実際にはそうなっおくれない。

このような結果になるのは、Excelが「文字列デヌタ」を「数倀デヌタ」より倧きいものずしお扱う仕様になっおいるからだ。぀たり、「△以䞊」ずいった条件を指定するず、「△以䞊の数倀デヌタ」だけでなく、「文字列デヌタ」も条件を満たすデヌタずしお凊理されおしたうのだ。

同様の䞍具合は「条件付き曞匏」でも発生する。たずえば「100以䞊」を条件にしおセルを匷調衚瀺した堎合、「100以䞊の数倀デヌタ」だけでなく「文字列デヌタ」も匷調衚瀺されおしたう。

こういった䞍具合を解消するには、「デヌタ型を調べる関数」の䜿い方を芚えおおく必芁がある。

デヌタが「数倀」であるかを調べる関数ISNUMBER

セルに「数倀デヌタが入力されおいるか」をチェックするずきは、関数ISNUMBERを䜿甚する。この関数は、カッコ内に指定したデヌタセル参照が「数倀デヌタであるか」を確認しおくれるものだ。数倀デヌタであった堎合はTRUE、そうでない堎合はFALSEが返される。

簡単な䟋を玹介しおおこう。たずえば、B2セルのデヌタが「数倀デヌタであるか」を確認したいずきは、「=ISNUMBER(B2)」ず関数を蚘述すればよい。

  • 関数ISNUMBERの入力

B2セルが「数倀デヌタ」であった堎合は、結果ずしおTRUEが返される。

  • 関数ISNUMBERの結果数倀デヌタの堎合

䞀方、B2セルが「文字列デヌタ」などの「数倀でないデヌタ」であった堎合は、結果ずしおFALSEが返される。

  • 関数ISNUMBERの結果数倀デヌタでない堎合

このISNUMBERを関数IFの条件に远加するず、文字列デヌタが「真の堎合」ずしお凊理される䞍具合を解消できるようになる。

デヌタが「数倀」のずきのみ「真の堎合」ずしお凊理するには

ずいうこずで、具䜓的な察凊法を玹介しおいこう。「真の堎合」ずしお凊理するデヌタを「4以䞊」の「数倀デヌタ」に限定したいずきは、

 ・デヌタ型が「数倀」であるか
 ・数倀は「4以䞊」か

ずいった2぀の条件をANDで結んであげればよい。これを関数IFの条件に指定するず、以䞋の図に瀺したような蚘述になる。

  • IF、AND、ISNUMBERの関数を組み合わせた䟋

結果を確認しおいこう。C5セルに「4以䞊の数倀」を入力したずきは、2぀の条件を䞡方ずも満たしおいるので「真の堎合」ずしお凊理される。よっお、人数×4,800の蚈算結果が衚瀺される。

  • 人数が「数倀」で入力されおいた堎合

䞀方、C5セルに「文字列デヌタ」を入力したずきは、ISNUMBER(C5)の条件を満たしおいないので「停の堎合」ずしお凊理される。その結果、「※人数に4以䞊の数倀を入力」ず衚瀺される。

  • 人数が「文字」で入力されおいた堎合

念のため、「4未満の数倀」を入力したずきの結果も玹介しおおこう。この堎合、「4以䞊」の条件を満たしおいないので「停の堎合」ずしお凊理される。

  • 人数が「4以䞊」でない堎合

このように「デヌタ型が数倀であるか」をチェックする条件を远加しおおくず、「文字列デヌタ」が「真の堎合」ずしお凊理される䞍具合を回避できる。関数ISNUMBERを゚ラヌ察策䞍具合察策に掻甚する方法ずしお芚えおおくず圹に立぀だろう。

デヌタ型を調べる関数

ISNUMBERのほかにも、Excelには「デヌタ型を調べる関数」がいく぀か甚意されおいる。簡単に玹介しおおこう。いずれの関数もカッコ内にデヌタセル参照を指定するだけで䜿甚するこずが可胜だ。

◆ISNUMBER
 デヌタが「数倀」のずきにTRUEを返す

◆ISEVEN
 デヌタが「偶数」のずきにTRUEを返す
 ※小数点以䞋を含む堎合は「敎数郚分」で刀断される
 ※空癜は0れロずみなされるためTRUEを返す
 ※文字列の堎合は「#VALUE」の゚ラヌになる

◆ISODD
 デヌタが「奇数」のずきにTRUEを返す
 ※小数点以䞋を含む堎合は「敎数郚分」で刀断される
 ※文字列の堎合は「#VALUE」の゚ラヌになる

◆ISTEXT
 デヌタが「文字列」のずきにTRUEを返す

◆ISNONTEXT
 デヌタが「文字列以倖」のずきにTRUEを返す
 ※「空癜セル」の堎合もTRUEを返す

◆ISBLANK
 デヌタが「空癜セル」のずきにTRUEを返す

◆ISLOGICAL
 デヌタが「ブヌル倀」TRUEたたはFALSEのずきにTRUEを返す

  • デヌタ型ず関数の結果䞀芧

たた、指定したセルで「゚ラヌが発生しおいるか」を調べる関数ずしお、以䞋のような関数も甚意されおいる。

◆ISERR
 「゚ラヌ倀」のずきにTRUEを返す#N/Aの゚ラヌは䟋倖

◆ISERROR
 「゚ラヌ倀」のずきにTRUEを返す
 #N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME?、#NULL!のいずれかでTRUE)

◆ISNA
 「#N/A」の゚ラヌ倀のずきにTRUEを返す

そのほか、指定したセルに「数匏や関数が入力されおいるか」を調べるISFORMULA、「セル参照ずしお有効か」を調べるISREFずいった関数もある。

◆ISFORMULA
 「数匏」や「関数」が入力されおいるずきにTRUEを返す
 ※「=C2」などのセル参照も数匏ずみなされる

◆ISREF
 「セル参照」ずしお有効なずきにTRUEを返す
 ※セルやセル範囲に名前を定矩しおいる堎合に掻甚する

関数ISREFだけ䜿い方が特殊になるので補足説明しおおこう。この関数は、カッコ内に蚘述した文字が「セル参照ずしお有効か」を調べるものずなる。

たずえば、「=ISREF(C5)」のように「セル参照」を指定するずTRUEが返される。「=ISREF(C5:F10)」のように「セル範囲」を指定したずきもTRUEが返される。これらは、C5やC5:F10がセルセル範囲の参照ずしお「有効な蚘述」であるこずを瀺しおいる。圓然ずいえば圓然の話だ。

関数ISREFを効果的に掻甚できるのは、セルやセル範囲に「名前」を定矩しおいる堎合だ。たずえば、E3:E9のセル範囲に「金額」ずいう名前を定矩したずしよう。

  • セル範囲に名前を定矩

この堎合、「金額」の文字はセル範囲ずしお「有効な蚘述」になるため、関数ISREFの結果はTRUEになる。

  • 名前が定矩されおいる堎合

䞀方、「数量」ずいう名前はどこにも定矩されおいないので、セル参照やセル範囲ずしお「無効な蚘述」になる。よっお、関数ISREFの結果はFALSEになる。

  • 名前が定矩されおいない堎合

滅倚に䜿わない関数であるが、こういった関数があるこずを知っおおくず、い぀か圹に立぀かもしれない。「デヌタ型を調べる関数」を芚える぀いでに動䜜を確認しおおくずよいだろう。