Excel。ISNUMBER関数は、対象が数値の場合にTRUEを返します。
<関数辞典:ISNUMBER関数>
ISNUMBER関数
読み方: イズナンバー
分類: 情報
ISNUMBER(テストの対象)
対象が数値の場合にTRUEを返す
【Excel・Word・PowerPoint・Access】あなたの「困った」を解決!10年以上の経験が詰まった、現場の疑問から生まれた実践テクニック集。作業効率を劇的に上げるOffice活用術をお届けします。
ISNUMBER関数
読み方: イズナンバー
分類: 情報
ISNUMBER(テストの対象)
対象が数値の場合にTRUEを返す
入力されているセル内の空白。
その空白が、全角ではなく半角だとしたら、それを全角にするという方法はありますが、そもそも、入力時にチェックできればいいわけですね。
では、そのようなことができるのでしょうか。
次の表をつかって、説明していきます。
入力時ということですから、入力規則をつかうことで対応することができます。
では、B2:B6を範囲選択します。
データタブにある、データの入力規則をクリックします。
入力値の種類を「ユーザー設定」にします。
数式のボックスに、
=isnumber(find(" ",b2))
と設定します。
そして、エラーメッセージも設定しますので、エラーメッセージタブに移動します。
全角空白でないと許可しないとすることができます。
タイトルには、「全角空白」とします。
エラーメッセージには、「全角空白を入力してください。」と設定します。
では、OKボタンをクリックして確認してみましょう。
B3には、全角空白をつかわないで、確定しようとしたら、エラーメッセージが表示されました。
このように、全角空白が入力されていないと、確定することができません。
B4には、半角空白を入力して入力したところ、確定することができませんでした。
このように、全角空白が入力されていないと、確定できないように入力規則をつかって設定することができます。
では、条件に設定した数式を確認しておきましょう。
=isnumber(find(" ",b2))
はじめのISNUMBER関数は、数値か日付(シリアル値)ならば、TRUEをかえし、そうでなければ、FALSEをかえすという関数です。
では、引数を確認すると、FIND関数をつかって、セル内に「” “」全角空白があるかを探しています。
全角空白があれば、そのセル内の何文字目にあるのかをかえします。
B2の場合は、3文字目に全角空白があるので、3と返します。
するとISNUMBER関数が、数値があるのでTRUEをかえすという数式です。
つまり、TRUEということで、全角空白が入力されていることがわかるという仕組みです。
逆に全角空白がない場合は、見つからないので、FIND関数の結果は、#VALUE!をかえします。
よって、ISNUMNER関数は、TRUEをかえせないので、含まれていないということがわかります。
入力規則をつかうことで、今回のような全角空白が入力されているかどうかのチェックを入力時におこなうことができます。
日付だけではなく、文字も含まれている列から、日付が入力されているセルかどうかを判断させるには、どうしたらいいのでしょうか。
次の表を用意しました。
D列には、「日付だったら」という条件で判断したいので、IF関数をつかうことで、「済」という文字を表示することができそうです。
ただ、どのようにしたら、日付と文字をわけて判断することができるのでしょうか。
D2に次の数式を作ります。
=IF(ISNUMBER(C2),"済","")
あとは、オートフィルで数式をコピーします。
これで、提出日に日付が入力されているものだけに「済」という文字を表示することができました。
この数式を説明します。
日付の期間がわかっているならば、この期間内なのかを判断させればよいのですが、今回は期間がわかりません。
また、日付がシリアル値であることを考えて「>=1」というように1以上すると、日付は確かに判断できるかもしれませんが、文字もJISコードで判断されますから、結局日付も文字も区別することができません。
そこで、ISNUMBER関数というのがあります。
このISNUMBER関数は、数値かどうかを判断することができる関数です。
ISNUMBER関数が数値かどうかを判断できるならば、この関数だけでいいように思えますが、このISNUMBER関数は、TRUEかFALSEという形で結果を算出します。
そのため、IF関数をつかうことで、結果をわかりやすくすることができます。
紹介したISNUMBER関数をはじめとする「IS系」関数は色々ありますので、意外とつかえるものが見つかるかもしれませんので、調べてみるといいかもしれませんね。
次の表をご覧ください。
E列には、OR関数をつかった数式が設定されています。
E2の数式、
=IF(OR(B2>70,C2>70),"○","")
をオートフィルで数式をコピーしていますが、結果を見ると、E3やE5の結果がおかしいことがわかります。
ちなみに、D2には、AND関数をつかった、数式を設定しています。
=IF(AND(B2>70,C2>70),"○","")
AND関数は、問題なく算出できていることがわかります。
ですが、OR関数は、算出できないようです。
なぜこのようなことが起こるのかというと、原因は、数値を対象にした条件なのに、その対象範囲内に、文字型データや空白があると、ダメということです。
データベースの考え方からすれば、当然というか、数値型の列に文字型のデータが入力されていることが問題な訳です。
しかしながら、Excelの帳票ではよくあるケースです。
そこで、どのようにしたらいいのかというと、データが数値型なのかを判断させてあげればいいわけです。
数値型でなければ、対応しないようにすればいいわけです。
E2の数式を次のようにアレンジしました。
=IF(OR(IF(ISNUMBER(B2),B2,0)>70,IF(ISNUMBER(C2),C2,0)>70),"○","")
オートフィルで数式をコピーした結果を見てみましょう。
ただし、数式が複雑になってしまいましたので、確認しておきましょう。
たぶん馴染みのない関数が使われています。
「ISNUMBER関数」は数値なのかどうかを判断するための関数です。
数値じゃないから、ちゃんと算出してくれないので、数値じゃなければ「0(ゼロ)」にするようにIF関数と組み合わせてつかっています。
それが、この引数の部分です。
IF(ISNUMBER(B2),B2,0)
数値ならば、そのまま。そうでなければ、「0(ゼロ)」とする処理をしています。
本来、「0(ゼロ)」と空白は意味が違うわけですが、空白にしてしまうと、うまくいきません。
条件が合致しないようにするため、「0(ゼロ)」にしています。
条件によっては「0(ゼロ)」というわけではないので、注意が必要です。
今回のように、算出結果がおかしいということも、稀にあるようです。
その場合、どのように対応したらいいのかを考える必要がありますね。
今回は、ISNA関数~ISOWEEKNUM関数までをご紹介しております。
ISNA関数
イズエヌエー
対象がエラー値の#N/Aの場合にTRUEを返す
ISNA(テストの対象)
ISNONTEXT関数
イズノンテキスト
対象が文字列でない場合にTRUEを返す
ISNONTEXT(テストの対象)
ISNUMBER関数
イズナンバー
対象が数値の場合にTRUEを返す
ISNUMBER(テストの対象)
ISODD関数
イズオッド
対象が奇数の場合にTRUEを返す
ISODD(テストの対象)
ISOWEEKNUM関数
アイエスオーウィークナム
ISO週番号を算出する
ISOWEEKNUM(日付)