• ベストアンサー

エクセルの関数で値の判定

A1セルの値が、0より大きい数値または文字列の「USA」か「UK」の場合のみTRUEを返したいのです。 =OR(A1>0,A1={"USA","UK"}) としてみましたが、AとかBとかの文字列も0より大きいとみなされるようでTRUEになってしまいます。 やむをえす、 =OR(AND(ISNUMBER(A1),A1>0),A1={"USA","UK"}) としてみましたが、もっと簡単に判定する方法はないでしょうか? エクセル2013です。

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

>もっと簡単に判定する方法はないでしょうか? ISNUMBER(A1)とCOUNT(A1)は同等の結果を得られ、ANDは四則演算の*と等価になることを利用して次のようにすると良いでしょう。 =OR(A1>0,A1={"USA","UK"})       ↡ =OR(COUNT(A1)*(A1>0),A1={"USA","UK"})

emaxemax
質問者

お礼

=OR(COUNT(A1)*(A1>0),A1={"USA","UK"}) いいですね!!

その他の回答 (4)

  • mimazoku_2
  • ベストアンサー率20% (1905/9111)
回答No.5

私のミスでご迷惑をお掛けしました。 で、やり直して完成したのでご連絡します。 図中のB5セルが検査対象になります。 E3は最終判定になります。 E5は数字の判定 E6は対象の文字判定となります。 それぞれの関数と説明が以下の通りです。 【E5】 ISNUMBERを使用しました。 =IF(ISNUMBER(B5)=TRUE,IF(B5>0,"TRUE","FALSE"),"FALSE") 【E6】 普通にIF文使用。 =IF(B5="USA","TRUE",IF(B5="UK","TRUE","FALSE")) 【E3】 普通にIF文使用。 =IF(E5="TRUE","TRUE",IF(E6="TRUE","TRUE","FALSE")) ややこしくなりましたが、ORが文字列処理において、文字コードを引用しているような雰囲気でした。 もしくは文字処理では不適合である。

emaxemax
質問者

お礼

ありがとうござます。 ただ、これじゃ最初に提示させていただいた =OR(AND(ISNUMBER(A1),A1>0),A1={"USA","UK"}) のほうが簡単じゃないですか?

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

下記(注)の理由から、自信ないが =OR(N(A2)>0,A2="USA",A2="UK") 例と結果  A2 B2 セル以下 2 TRUE -1 FALSE USA TRUE UK TRUE OM FALSE tu FALSE USAA FALSE USA TRUE 87 TRUE xc FALSE A2>0とすると、文字列の場合も、この判定するようで、Nで数値化して、それを避けた。(注)数値の場合の条件が、>=0だとだめですが。 https://kokodane.com/kansu_info_16.htm

emaxemax
質問者

お礼

imogasiさん、ありがとうございます。 なるほど、これはすごい!! 数値の場合の条件が、>0なのでぴったり!!・・・・と思ったのですが。 唯一、TRUEを入れられた場合(そんなことはまずないはずですが)、N関数では1になってTRUEが返っちゃいます。残念

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.3

こんなのはどうでしょう =OR(COUNTIF(A1,">0"),A1={"UK","USA"})

emaxemax
質問者

お礼

ありがとうございます。 これいいですね!

  • mimazoku_2
  • ベストアンサー率20% (1905/9111)
回答No.1

これで出来ました。 =OR(A1>0,D1,D2) 対象はA1 D1にUSA、D2にUKを入力 そのセル参照でOK 実際の画面がこちら↓ これでA1が0以上またはUSAまたはUKでTRUEを返します。

emaxemax
質問者

お礼

早速ありがとうございます。 =OR(A1>0,A1={"USA","UK"}) と同じ結果です。 A1にROCとかJPNが入っても A1>0 となるようでTRUEが帰ります。

関連するQ&A