dポイントプレゼントキャンペーン実施中!

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

'=ISNUMBER(B2,C3,D4)←これでは当然エラーになりますが、こんな感じで簡単に判定するワークシート関数はないのでしょうか?

A 回答 (7件)

=ISNUMBER(SUMPRODUCT(B2,C3,D4))



ならどうでしょう?
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/06 12:44

=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のように、セルの数を数える関数があれば簡単なのかもしれませんけど、無いみたい・・・
    • good
    • 0
この回答へのお礼

> =ISNUMBER(SUMPRODUCT(B2,C3,D4)) だと、
> B2,C3,D4:E5 とかは、ダメなのでは?

そのようですね。範囲はダメみたいです。
そういうときは
=ISNUMBER(SUMPRODUCT(B2,C3,D4,D5,E4,E5))
で対処します。

> =AREAS((D4,E4,D5,E5)) これは 4
> カンマで区切る時はカッコを二重にしなければなりません。

またひとつものを覚えました。
ありがとうございました。

お礼日時:2006/12/09 18:50

こんばんは。

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)
    • good
    • 0
この回答へのお礼

引数を複数許すISBLANK関数、すごいですね!

今回は、
=ISNUMBER(SUMPRODUCT(B2,C3,D4))
でやりましたが、今後の参考にさせていただきます。

ありがとうございました。

お礼日時:2006/12/07 15:38

NO3です。


他の方を参考に次の方法は如何でしょうか。
=COUNT(aaa)=AREAS(aaa) 
aaaは対象範囲を名前定義をして下さい。
    • good
    • 0
この回答へのお礼

なんどもありがとうございます。

名前定義をすれば、OKでしたが、
=COUNT(B2,C3,D4)=AREAS(B2,C3,D4) では不可でした。

また、AREAS()ではセルが接続している場合(不規則なので、こういう場所もあります)、正しく数えてくれないことがありました。

お礼日時:2006/12/06 14:04

こんにちは。



>配置に規則性はなく、範囲でもありません。

配置に規則性がないのでしたら、名前-定義(以下の場合は、"hanni")を付けて、COUNT関数とCOUNTA関数で比較すればよいのではありませんか?

=COUNT(hanni)=COUNTA(hanni)

これには、COUNTBLNAK関数は使えないようですので(引数の型が決められている)、ブランクがある場合は、予め、数を数えて、数で比較する必要があるかもしれません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

COUNTとCOUNTAだけでは、入力値しか見てくれませんので、指定した複数のセルのすべてに数値が入力されているかどうかの判定には使えません。

=AND(COUNT(B2,C3,D4)=COUNTA(B2,C3,D4),COUNTBLANK(B2,C3,D4)=0)

が有効なら、これでも良いのですが、COUNTBLNAK関数は使えないようですのでダメですね。
指定したセルの数をいちいち指で数えるのもちょっと・・・。

お礼日時:2006/12/06 12:51

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

    • good
    • 0
この回答へのお礼

ありがとうございます。

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

お礼日時:2006/12/06 12:46

範囲のセルなら


=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
    • good
    • 0
この回答へのお礼

さっそくありがとうございます。
残念ながら、配置に規則性はなく、範囲でもありません。

特定なので、=NOT(ISERR(B2+C3+D4))を試すと、数値が無い場合もOKとなり、判定できませんでした。

お礼日時:2006/12/06 11:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています