• ベストアンサー

エクセル関数 ISNUMBERについて

こんにちは。 ISNUMBER と IF関数を用いてセルに"真"か "偽"を表示させたいのですが・・・ 例えば、セルに特定の数値が入力されれば“真”を表示する。ということです。 どうやら、数字の「1」は「10」「12」なども 「1」が含まれていると認識するようで、困っています。 また、他のセルの関数を参照していることからどのような式を組めばよいのか分かりません。 詳しく説明すると以下のようになります。 (( ))はセルに入力されている関数です。        A         B         C 1    2009/01/20   2      1    (( =MONTH(A1) )) 3     4、10月    (( 文字列  )) 4     真    (( = IF(ISNUMBER(SEARCH(A1,A3)),"真", "偽") )) A1 シリアル値で入力された日付 A2 その日付より“月”だけ取り出して表示 A3 真か偽かを判断する為の基本となるデータを入力 A4  ISNUMBER関数 → A2の数値がA3に含まれていれば“真”をそうでないらな“偽”を表示する。 上記のように 1 は 10月 とは異なるので“偽”としたいのですが、10月の 10 の 1 を読み取ってしまうようで “真”と なってしまいます。 11月、12月 等も 1、2、と 読み取ってしまうようで・・・・ 1は 1月のみ“真”と表示。 2は2月のみ“真”と表示。というようにするにはどうしたら良いのでしょうか? 宜しくお願いします。

noname#116281
noname#116281

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >3     4、10月 >   (( 文字列  )) ここから、月数を出すって、10月は良いとしても、「4、」という表現を、月数と取るのは、とても一般関数では対応するのは難しいと思います。 4、10月 のスタイルなら、初めの「4、」は無視します。 A4: =IF(SUBSTITUTE(RIGHT(A3,3),"、","")=A2&"月","真","偽") 4月、10月 とするなら、 =IF(ISNUMBER(FIND(A2&"月","、"&A3)),"真","偽") となります。

noname#116281
質問者

お礼

返事が大変遅くなり申し訳ございませんでした。 4、を月数と読み取るのは関数では出来ないのですね。 たしかに・・・規則性がないですね。 1番目の式は4,10月 のスタイルが確かではなかったので・・例えば10,5月 とかも存在するんです・・ごめんなさい。 2番目の式がその他に色々ためしてみた結果すべて対応してくれました。 ”月”に対応させる為にFIND関数を使えば良かったんですね! ありがとうございます!

その他の回答 (2)

回答No.3

ここは、A3の表記をもっと簡略に、「4,10」のようにします。入力 がラクチンですね。そして、search関数を =search(A2&",",A3&",") のようにカンマが後ろについた文字列を探すようにします。つま り、「1」ではなく「1,」を探すので、「10,」や「12,」にはヒッ トしません。ちなみに私ならif関数で包まずTRUEとFALSEでよしと しますけどね。

noname#116281
質問者

お礼

返事がおそくなり大変申し訳ございません。 A2を参照する関数が他にも使用されていまして・・カンマで対応するような関数にするのは少し難しかったです。 関数はまず出来るだけ簡単に行うことが大切ですね。 これからはそのことを考えながら式を作っていきます。 どうも、ありがとうございました。

回答No.1

A3へどのような規則でデータ入力するかによって、 A4での判断が大きく変わってきます。 一番判断を簡単にするには、 01月、02月、03月・・・のように一桁の月を0を頭にいれての入力です。 A1 2009/01/20 A2 =TEXT(A1,"mm") A4 =IF(COUNTIF(A3,"*"&A2&"*")>0,"真","偽") A3 01月、09月 の時、A4 真 A3 10月、12月 の時、A4 偽 A3セルへ複数の月を入力するのであれば0を入力した方が複雑にならなくて良いと思います。 0の入力が困難であれば、規則性(月と月の区切りを『、』で統一など)があるなら、 複雑になる前提ですが、いくらでも方法はあると思います。

noname#116281
質問者

お礼

返事が大変おそくなりまして申し訳ございません。 なるほど、COUNT関数を使用する方法もあるのですね。 簡単で大変分かりやすいです。 ただA2へのTEXT関数の使用が出来ない状態でして・・・A2を参照する関数を他のセルにて使用しておりました・・A2にTEXT関数を入れると別の関数が上手く行かなくなってしまいました。 でも、色々な方法があることを知りました。 ありがとうございます!

関連するQ&A

  • エクセルのISNUMBERについて

    office 2007を使用しています。 ISNUMBER関数を使用して対象セルが数値のみか判断をしたいのですが、 対象セルの表示形式が文字列の場合に数値とみなしてくれません。 何か良い方法はないでしょうか? 苦肉の策として  IF(ISERR(INT(対象セル))=TRUE,"文字","数値") としています。

  • エクセル2007「ISNUMBER関数」の組合せについて

    エクセル2007「ISNUMBER関数」の組合せについて うまく説明できないので具体的に関数を掲載します。 「B列またはC列が空白の場合は空白セルとする」という関数を以下のようにつくりました。 =IF(OR(B2="",C2=""),"",DATEDIF(C2,B1,"Y")) (B1にはtoday関数が入力されています) これにC列が数値ではない場合も空白にするという条件を追加したいのです。 ISNUMBER関数を使うのだと思うのですが組合せ方がわかりません。 ご教示よろしくお願いします。

  • IF関数のネスト

    IF関数のネストについての質問です。 例えば、D1のセルに日付が入力してあり、 A4のセルの日付の月がD1の月と同じならば、 「今月」違うなら「エラー」と表示させたいのですが、 数式は解るのです。↓ =IF(MONTH($D$1)=MONTH(A4),"今月","エラー") ですが入力のしかたが解らないのです。 まず、fxの関数の挿入からIFを選択、論理式の部分に、 fxの左にある下矢印からMONTHを選択、 シリアル値はD1を絶対参照。 このあとがどうしていいのか解らないのです。 どなたか教えてください。 宜しくお願いします。

  • エクセルで"=AND(ISNUMBER(B2),ISNUMBER(C3),ISNUMBER(D4))"の簡略化?

    エクセル2000です。ワークシート関数での質問です。 特定の複数のセルのすべてに数値が入力されているかどうかの判定は、たとえば以下のような関数で調べられますね? =AND(ISNUMBER(B2),ISNUMBER(C3),ISNUMBER(D4)) このように少ないセルならこれでもいいのですが、多くなってくるといちいち、セルの数だけISNUMBER()を書いていくのが大変になります。 '=ISNUMBER(B2,C3,D4)←これでは当然エラーになりますが、こんな感じで簡単に判定するワークシート関数はないのでしょうか?

  • エクセルでの時間の大小関係

    A1というセルに 23:00 の数値が入っています。 それで、=IF(A1>"20:00","真","偽") という関数を 使っても 偽 と表示されます。 この式は間違っているのでしょうか? よろしくお願いします。

  • IF関数で出した数値をSUM関数で使う

    2010エクセルでの関数について質問があります。 文章での説明でどこまで詳しくご説明できるか不安ですが お付き合い願います。 IF関数で =IF(A13>=25,"10","")と計算し、 セル内に、「10」と表示しています。 さらに、 上記、関数から表示した「10」を SUM関数を使い、 =SUM(A13,B13)と計算しました。 しかし、 IF関数で出した「10」が認識されず足し算されません。 「真の場合」や「偽の場合」で出された数値は 数値として認識されていないのでしょうか? 例えば・・・ B13のセルの数値が「200」であれば、SUM関数を入力しても 「10」が足されることなく、「200」のままで表示されるということです。 どのような方法ならば、足し算されるのでしょうか。 または、関数の使い方が間違っているのでしょうか。 説明が分かりにくく申し訳ありませんが、 宜しくお願い致します。

  • エクセルの関数について

    IF関数で"指定したひとつ"のセルの"数値"に対して真偽を返しているようなイメージで、"指定した範囲"のセルの"文字"に対して真偽を返せるような関数はありませんか? また、複合関数でもいいのでご存知でしたら是非ご教授願います。 やりたいことは次のようなことです。 ・A1~A100までのセルの中の文字を比較する。 ・真であればOK、偽であればNGといった感じです。 宜しくお願いいたします。

  • IF関数で「日付~日付」と表示させたい

    月2回(原則7日と22日)、給与があります。 給与日が7日(週末、祝日がかぶるとその前日になる)の場合、 その支払対象期間は先月の16日~月末までです。 (例:給与日が5/7/2012の場合、その支払対象期間は4/16/2012-4/30/2012) 給与日が22日(週末、祝日がかぶるとその前日になる)の場合、 その支払対象期間は当月1日~15日までです。 (例:給与日が5/22/2012の場合、その支払対象期間は5/1/2012-5/15/2012) そこで、例えば 給与日のセルに5/7/2012(週末にかぶる場合は前日)と入力すると 次のセルに自動で(4/16/2012-4/30/2012)と表示され、 給与日のセルに5/22/2012(週末にかぶる場合は前日)と入力すると 次のセルに自動で(5/1/2012-5/15/2012)と表示されるようにしたいです。 そこで、IF関数を使い、(I1のセルに給与日(5/7/2012)が入力されているとします) 論理式:   DAY(I1)<15 真の場合:  MONTH(I1)-1&"/16/2012-"&DATE(YEAR(I1),MONTH(I1),1)-1 偽の場合:  MONTH(I1)&"/1/2012-"&MONTH(I1)&"/15/2012" と入力したところ、 偽の場合はよいのですが、真の場合には 4/16/2012-41029 と月末の日付がシリアル値で返ってきてしまいます。 どうしたら、41029が日付表示になってくれるのでしょうか・・。 宜しくお願いいたします。

  • エクセルの関数

    数種類の関数を組み合わせて作ったのですが、ANDでもORでも答えが同じになってしまいます。 どこに間違いがあるのか、教えて頂けると助かります。 =IF(ISERROR(AND(FIND("A",A5,1),FIND("B",A5,1)=FALSE)),"偽","真") =IF(ISERROR(OR(FIND("A",A5,1),FIND("B",A5,1)=FALSE)),"偽","真") 上記式はAND・OR以外はすべて同じのつもりです。 AND関数の場合の答えは、期待通りです。 OR関数の答えとして、A5のセルに『A又Bが含まれている』にも拘わらず、『偽』と表示されます。 (ORのそれ以外の答えは期待通りです。) OR関数で、『A5のセルに、A又はBがひと文字でも含まれている場合』を、『真』とするにはどうすればよいでしょうか? 宜しくお願いいたします。

  • エクセルIF関数について

    エクセルIF関数について A2セルにA1セルが空白なら空白。8:00ならば、8:00。8:00>ならA3セルに(そのままの値を)表示せよ。 という関数を入れたいのですが、どの関数をどのように定義すれば良いのかわかりません。 IF関数かな?と思ったのですが、IF関数で偽のときは、「別のセルに入力せよ」などというような定義って出来るのでしょうか? どなたか教えてください。

専門家に質問してみよう