• ベストアンサー
  • 困ってます

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

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

共感・応援の気持ちを伝えよう!

  • 回答数7
  • 閲覧数3052
  • ありがとう数7

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

  • ベストアンサー
  • 回答No.2
  • redowl
  • ベストアンサー率43% (2140/4926)

=ISNUMBER(SUMPRODUCT(B2,C3,D4)) ならどうでしょう?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 うまく行きました!

関連するQ&A

  • エクセル関数 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月のみ“真”と表示。というようにするにはどうしたら良いのでしょうか? 宜しくお願いします。

  • ExcelのISNUMBERについて

    (1)A2に数値が入った場合、A1には「1」 (2)A3に数値が入った場合は、A1には「2」 (3)A4に数値が入った場合は、A1には「3」 とするには、どうすればいいのでしょう? (1)の数式は =IF(ISNUMBER(A2),1,"") ですが、 その後の(2)(3)が続けてどう入力すればよいのか分からなくて、、、 教えていただけますでしょうか?

  • IsNumberについて

    Sub macro01() If WorksheetFunction.IsNumber(123) = ture Then MsgBox "数値です" End If End Sub WorksheetFunction.IsNumber(123)で、数値なら、MsgBox "数値です"って表示されると思ったのですが、 MsgBox "数値です"を通りません。 123を数値と認識してないのでしょうか?

その他の回答 (6)

  • 回答No.7
  • NNAQ
  • ベストアンサー率56% (104/184)

=ISNUMBER(SUMPRODUCT(B2,C3,D4)) だと、 B2,C3,D4:E5 とかは、ダメなのでは? 調べたい数値にゼロが無ければ、配列数式で =PRODUCT(B2*C3*D4:E5) 文字列があればエラー、ブランクがあればゼロになります。 他には、一発で出さないで、これも配列数式で =ISNUMBER(INDEX(($B$2,$C$3,$D$4:$E$5),,,ROW(A1))) 下にコピーして、FALSEが無いか調べるとか。 それから、AREAS関数は、 =AREAS(D4:E5) これは 1 =AREAS((D4,E4,D5,E5)) これは 4 カンマで区切る時はカッコを二重にしなければなりません。 行数・列数を数えるROWS,COLUMNSのように、セルの数を数える関数があれば簡単なのかもしれませんけど、無いみたい・・・

共感・感謝の気持ちを伝えよう!

質問者からのお礼

> =ISNUMBER(SUMPRODUCT(B2,C3,D4)) だと、 > B2,C3,D4:E5 とかは、ダメなのでは? そのようですね。範囲はダメみたいです。 そういうときは =ISNUMBER(SUMPRODUCT(B2,C3,D4,D5,E4,E5)) で対処します。 > =AREAS((D4,E4,D5,E5)) これは 4 > カンマで区切る時はカッコを二重にしなければなりません。 またひとつものを覚えました。 ありがとうございました。

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

こんばんは。Wendy02です。 >指定したセルの数をいちいち指で数えるのもちょっと・・・。 それは、まあ、指で数えるか、それとも他のもので数えるかは、なんとも言えないものがありますが……。^^;(ちなみに、私がそのような仕事の時は、すべて電卓で数えていました。) 今、#5 さんの数式について、チェックしてみましたが、名前登録で、それぞれが別々な限りは、AREAS 関数で、ひとつとして勘定してくれるようですね。 今、いくつかやってみて、引数が、パラメータ配列 (COUNT がパラメータ配列で、COUNTBLANK は、範囲が引数)になっているものを使わなければ、バラバラの場所については、検索しませんね。あまり、この種のものに、わざとExcelの機能に制限を加えて考えてもクイズではないので、手を掛けてもしょうがないような気がしますね。^^; たぶん、将来に渡って解ける人はいるとは思いますが。 人それぞれですから、私なら、100でも、1,000でも、数えてしまいます。というか、業種とか職種に関わることで、そういう仕事だったし、そういう仕事の仕方を教わってきました。ただ、そういうものには、向き不向きがありますから、無理強いは出来ませんね。 そんな話は的外れでしょうから、パラメータ配列で作ってみました。 '----------------------------------------------------- Public Function FISBLANK(ParamArray arg1() As Variant) As Boolean '引数を複数許すISBLANK関数 Dim v As Variant Dim c As Variant Application.Volatile For Each v In arg1  If TypeName(v) = "Range" Then   For Each c In v   If IsEmpty(c) = True Then    FISBLANK = True    Exit Function   End If   Next c  End If Next v End Function '----------------------------------------------------- 使用例: =FISBLANK(hanni) =FISBLANK(hanni,A1)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

引数を複数許すISBLANK関数、すごいですね! 今回は、 =ISNUMBER(SUMPRODUCT(B2,C3,D4)) でやりましたが、今後の参考にさせていただきます。 ありがとうございました。

  • 回答No.5
  • mu2011
  • ベストアンサー率38% (1910/4994)

NO3です。 他の方を参考に次の方法は如何でしょうか。 =COUNT(aaa)=AREAS(aaa)  aaaは対象範囲を名前定義をして下さい。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

なんどもありがとうございます。 名前定義をすれば、OKでしたが、 =COUNT(B2,C3,D4)=AREAS(B2,C3,D4) では不可でした。 また、AREAS()ではセルが接続している場合(不規則なので、こういう場所もあります)、正しく数えてくれないことがありました。

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

こんにちは。 >配置に規則性はなく、範囲でもありません。 配置に規則性がないのでしたら、名前-定義(以下の場合は、"hanni")を付けて、COUNT関数とCOUNTA関数で比較すればよいのではありませんか? =COUNT(hanni)=COUNTA(hanni) これには、COUNTBLNAK関数は使えないようですので(引数の型が決められている)、ブランクがある場合は、予め、数を数えて、数で比較する必要があるかもしれません。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 COUNTとCOUNTAだけでは、入力値しか見てくれませんので、指定した複数のセルのすべてに数値が入力されているかどうかの判定には使えません。 =AND(COUNT(B2,C3,D4)=COUNTA(B2,C3,D4),COUNTBLANK(B2,C3,D4)=0) が有効なら、これでも良いのですが、COUNTBLNAK関数は使えないようですのでダメですね。 指定したセルの数をいちいち指で数えるのもちょっと・・・。

  • 回答No.3
  • mu2011
  • ベストアンサー率38% (1910/4994)

安直ですが、=COUNT(B2,C3,D4)=3では駄目でしょうか。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 これはわたしも考えたのですが、いちいちセルの数を指折り数えなくてはなりませんよね? 3つや4つならいいのですが、不規則な位置に多数あると数え間違いしそうなのです。

  • 回答No.1
  • mshr1962
  • ベストアンサー率39% (7416/18946)

範囲のセルなら =SUMPRODUCT(ISNUMBER(A1:A10)*1)=10 で判定できます。 特定のだと =NOT(ISERR(B2+C3+D4)) なら文字列(ブランクと数値変換できる文字列を除く)はFALSEとなります。 もっとも配置に規則性があればSUMPRODUCTで確認できますが... B2,C3,D4→行と列が同じ(B=2,C=3,D=4)なら =SUMPRODUCT(ISNUMBER(B2:D4)*(COLUMN(B2:D4)=ROW(B2:D4))=3

共感・感謝の気持ちを伝えよう!

質問者からのお礼

さっそくありがとうございます。 残念ながら、配置に規則性はなく、範囲でもありません。 特定なので、=NOT(ISERR(B2+C3+D4))を試すと、数値が無い場合もOKとなり、判定できませんでした。

関連するQ&A

  • エクセルで文字列検索の関数

    エクセルのワークシート関数で質問です。 「A1セルに、文字列、A、B、Cの何れかを含み、かつCDを含まない」ことを調べる関数です。 素直に、 =AND(ISNUMBER(FIND("A",A1)),ISNUMBER(FIND("B",A1)),ISNUMBER(FIND("C",A1)),NOT(ISNUMBER(FIND("CD",A1)))) と長ったらしく書けば取得できることはわかるのですが、もっと簡潔なやり方がありそうな気がします。 どうか教えてください。

  • エクセルのISNUMBERについて

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

  • “ISNUMBER” を含む関数について

    現在、下記関数を使用しています。 C5=IF(ISNUMBER(B5),VLOOKUP(B5,支払先,2,FALSE)," ") B5に[支払先C]を入力すると、C5に[支払先]が出るようになっています。 [支払先C]と[支払先]は、別シートに一覧表示し、リンクさせてる状態です。 そこで質問です。 (1)別シート一覧表の範囲設定方法  (現在、行の挿入で追加しています) (2)“ISNUMBER”の意味  (IFとVLOOKUPの意味は理解できています) 引継ぎ時に型ができていたので、内容を理解しないまま使っています。 補足が必要かと思いますので、質問も兼ねてご回答頂ければと思います。 宜しくお願い致します。

  • 入力した数値を元にその他の数値を効率よく求める方法

    お世話になります。 Excelの関数について質問させていただきます。 図を見て頂ければ早いかとは思いますが、元の量(A2~A5)を基準に、 現在ある量を入力する事でその他の量が自動で計算できる式を作りたいと思っています。 現時点で試しているのは IF関数を使い、数値の入っているセルを見つける →数値が入っていれば割合を求め数量を出す →数値がなければ次のセルに移動、以下繰り返し 具体的にD2のセルには以下のような計算式が入っています。 IF(ISNUMBER($C$2),$C$2/$A$2*A2,IF(ISNUMBER($C$3),$C$3/$A$3*A2, IF(ISNUMBER($C$4),$C$4/$A$4*A2,IF(ISNUMBER($C$5),$C$5/$A$5*A2, IF(ISNUMBER($C$6),$C$6*B2," "))))) 今は5行しか入っていないので動きますが、実際はもっとある為ネストの制限に引っかかりそうです。 なにより計算式が長くて修正するにも一苦労してしまいます。 ここまで来て行き詰ってしまいました。 既出でしたら申し訳ありません。知恵を貸して下さい。よろしくお願いします。

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

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

  • セル内の文章から文字を抜出したいです

    セル内の文章から文字を抜出したいです。 文字の書き方は、本当にランダムな並び方をしています。 [例] A1セル あいうえお12345 ↓ B1セル ○○ A2セル かきくけこ456789 ↓ B2セル ■■ いま、下の関数式を入れていますが、5つしか文字を抜き出せません。 せめて倍の10個は抜出したいのですが、どうすればいいでしょうか? =IF(ISNUMBER(FIND("あいうえお",A2)),"OO",IF(ISNUMBER(FIND("さしすせそ",A2)),"■■",IF(ISNUMBER(FIND("かきくけこ",A2)),"□□",IF(ISNUMBER(FIND("たちつてと",A2)),"◇◇",IF(ISNUMBER(FIND("なにぬねの",A2)),"△△","その他"))))) よろしくお願いいたします。

  • マクロ記録実行で実行時エラー'1004'発生

    excel2010 B2セルに文字列が入っています。 文字と数値の混載です。 数値の位置は不定です。 L2のセルで、下記判定をします。 B2セルの文字列(約20文字程度)の左から4番目がドだったら、数値を抽出、ド以外だったら空白。 WEBで計算式があったので、それをそのままマクロの記録としました。 Range("L2").Select ActiveCell.FormulaR1C1 = _ "=IF(RIGHT(LEFT(RC[-10],4),1)=""ド"",MID(RC[-10],1/MAX(INDEX(ISNUMBER(--MID(RC[-10],ROW(INDIRECT(""1:""&LEN(RC[-10]))),1))/ROW(INDIRECT(""1:""&LEN(RC[-10]))),)),MAX(INDEX(ISNUMBER(--MID(RC[-10],ROW(INDIRECT(""1:""&LEN(RC[-10]))),1))*ROW(INDIRECT(""1:""&LEN(RC[-10]))),))-1/MAX(INDEX(ISNUMBER(--MID(RC[-10],ROW(INDIRECT(""1:""&LEN(RC[-10]))),1))/ROW(INDIRECT(""1:""&LEN(R" & _ "),))+1)*1,"""")" Range("L3").Select で記録されます。 上記を、マクロの実行すると実行時エラー'1004' アプリケーション定義またはオブジェクト定義のエラーです。 と表示されます。 何がおかしいのでしょうか? シートで、マクロでなく、L2セルでF2リターンとする分には、数値が表示されます。 下記は、L2の中身です =IF(RIGHT(LEFT(B2,4),1)="ド",MID(B2,1/MAX(INDEX(ISNUMBER(--MID(B2,ROW(INDIRECT("1:"&LEN(B2))),1))/ROW(INDIRECT("1:"&LEN(B2))),)),MAX(INDEX(ISNUMBER(--MID(B2,ROW(INDIRECT("1:"&LEN(B2))),1))*ROW(INDIRECT("1:"&LEN(B2))),))-1/MAX(INDEX(ISNUMBER(--MID(B2,ROW(INDIRECT("1:"&LEN(B2))),1))/ROW(INDIRECT("1:"&LEN(B2))),))+1)*1,"")

  • sum関数で合計が返らない。

    sum関数で、数値の入ったセルの合計を求めようとしましたところ、なぜか合計が1600とならなければならないところ、0になってしまいます。 数値の入ったセルが数値であること(文字列ではない)は、isnumberで確認をしたのですが、原因がわかりません。 どなたか解決方法をご存じの方がいましたらおしえてください。 excel2010です。

  • Excel ライブラリ参照設定

    Excel の =COUNTA(B2:B30,ISNUMBER) で、指定セル範囲から数値の入ったセル数を数えさせようとしますと、「Excel プロジェクトまたはライブラリが見つかりません」といメッセージが出て、次に 「参照設定-VBAProject」という名の、参照可能なライブラリ ファイルの並んだウインドウが出てきます。 さて、ここでどのファイルを選んだらよいのでしょうか。 それがわからないことには、参照のしようがありません。 どうぞ教えて下さい。よろしくお願いします。 (注)関数の ISNUMBER を、">0" あるいは "<>0" などの演算に変えてみても同じです。

  • 文字列AかBを含むセル数をSUMPRODUCT関数で求める場合

    文字列AかBを含むセル数をSUMPRODUCT関数で求める場合 エクセル2000です。 A1:A10のセル範囲だとして =SUMPRODUCT(ISNUMBER(FIND({"A","B"},A1:A10))*1) とすると、同一セルにA、Bの両方があった場合、重複してカウントされてしまいます。 重複を除外するために、 =SUMPRODUCT(ISNUMBER(FIND({"A","B"},A1:A10))*1)-SUMPRODUCT(ISNUMBER(FIND("A",A1:A10))*ISNUMBER(FIND("B",A1:A10))) と、重複してカウントされた数から両方が存在するセルの数を減じて求めましたが、以下のようなより簡素な式でも求められことがわかりました。 =SUMPRODUCT((ISNUMBER(FIND("A",A1:A10))+ISNUMBER(FIND("B",A1:A10))>=1)*1) この式でなぜAB両方があるセルが重複カウントされないのかどうもわかりません。 ご教示いただければ幸いです。 なお、SUMPRODUCTではなく =SUM(COUNTIF(A1:A10,{"*A*","*B*"}))-SUM(COUNTIF(A1:A10,{"*A*B*","*B*A*"})) でもできることは存じておりますが、今回はSUMPRODUCTの疑問として質問いたしました。