- ベストアンサー
エクセルの関数で値の判定
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です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>もっと簡単に判定する方法はないでしょうか? ISNUMBER(A1)とCOUNT(A1)は同等の結果を得られ、ANDは四則演算の*と等価になることを利用して次のようにすると良いでしょう。 =OR(A1>0,A1={"USA","UK"}) ↡ =OR(COUNT(A1)*(A1>0),A1={"USA","UK"})
その他の回答 (4)
- mimazoku_2
- ベストアンサー率20% (1905/9111)
私のミスでご迷惑をお掛けしました。 で、やり直して完成したのでご連絡します。 図中の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が文字列処理において、文字コードを引用しているような雰囲気でした。 もしくは文字処理では不適合である。
お礼
ありがとうござます。 ただ、これじゃ最初に提示させていただいた =OR(AND(ISNUMBER(A1),A1>0),A1={"USA","UK"}) のほうが簡単じゃないですか?
- imogasi
- ベストアンサー率27% (4737/17069)
下記(注)の理由から、自信ないが =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
お礼
imogasiさん、ありがとうございます。 なるほど、これはすごい!! 数値の場合の条件が、>0なのでぴったり!!・・・・と思ったのですが。 唯一、TRUEを入れられた場合(そんなことはまずないはずですが)、N関数では1になってTRUEが返っちゃいます。残念
- mt2015
- ベストアンサー率49% (258/524)
こんなのはどうでしょう =OR(COUNTIF(A1,">0"),A1={"UK","USA"})
お礼
ありがとうございます。 これいいですね!
- mimazoku_2
- ベストアンサー率20% (1905/9111)
お礼
=OR(COUNT(A1)*(A1>0),A1={"USA","UK"}) いいですね!!