Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Pro : Excel 2016)
関数で使用する等号不等号もセル値を参照したい
投稿日時: 21/04/13 15:05:19
投稿者: いんか

お世話になります。表題の通り、IF文などの関数で使用する等号不等号の値もセル値を参照したいと思っています。
そのようなことはできるのでしょうか。ご教示いただければ幸いです。VBAで可能なら、それも教えてください。

回答
投稿日時: 21/04/13 15:42:15
投稿者: んなっと

必ず具体例を添えて質問してください。
 
A1(70)と比較して、B列から順に より大きい、より小さい、以上、以下、等しい
 
数値限定
 
   A  B  C  D  E  F
 1  70  >  < >= <=  =
 2 -10   ○   ○  
 3  0   ○   ○  
 4  10   ○   ○  
 5  20   ○   ○  
 6  30   ○   ○  
 7  40   ○   ○  
 8  50   ○   ○  
 9  60   ○   ○  
10  70     ○ ○ ○
11  80 ○   ○    
 
B2
=IF(LEN(TEXT($A2,"["&B$1&$A$1&"]0;;;")),"○","")
右方向・→下方向・↓
 
 
【4.0マクロ関数を利用する方法】
 
 B2を選択
→数式
→名前の定義
→名前:
Evalu
 参照範囲:
=EVALUATE(!$A2&!B$1&!$A$1)+NOW()*0
→OK
→B2
=IF(Evalu,"○","")
右方向・→下方向・↓
→*.xlsmで保存

投稿日時: 21/04/14 13:08:26
投稿者: いんか

ご回答ありがとうございます。シートに落として検証しました。できました。でも、なぜLEN関数でこの結果がでるのかわかりませんでした。。申し訳ないですが、もう少し解説をお願いしてもいいでしょうか。この後、アンド条件で式を複雑にしていきたいと思っています。また、数字のみ、ということですが、テキストでもできる方法はありますでしょうか。A=Aの時、○、のように。

回答
投稿日時: 21/04/14 13:31:31
投稿者: んなっと

こう書きましたよね?

引用:
必ず具体例を添えて質問してください。

投稿日時: 21/04/14 14:20:27
投稿者: いんか

具体的には、以下のようなシート1と、入力値を計算している別シート2があります。
     A B C D E F G H
1 基準値1 比較演算子1 入力値1 アンドオア 基準値2 比較演算子2 入力値2 結果
2 あ > い and 1 = 1 ○とか×
3 100 = 20 or う = え ○とか×
4
5
6
7
8
9
10
.
.
.
 
 
入力値1、2は、各人による手入力して計算した結果の値です。手入力による内容の組み合わせによって、
手入力のミスを防ぎたいと思っています。入力値に空欄もあります。
 
こういった条件による結果判定行は、随時増えていくことを想定しています。
 
また今回の質問からは外れますが、この仕組みをさらに展開し、
結果に対して×だった項目に対して、VBAでFOR文をつくって、メッセージを出していきます。
 

回答
投稿日時: 21/04/14 17:19:20
投稿者: んなっと

("う">"い") * (5>=1) のような文字列を作成してから、それを評価。
 
 I2を選択
→数式
→名前の定義
→名前:
Evalu
 参照範囲:
=EVALUATE(!H2)+NOW()*0
→OK
 
   A  B  C    D  E  F  G          H   I
1 基1 演1 入1 アンドオア 基2 演2 入2       評価式 結果
2  う  >  い   and  5  >=  1 ("う">"い")*(5>=1)   1
3  5  =  1   and  う  <>  い (5=1)*("う"<>"い")   0
4  う  >  い   or  5  >=  1 ("う">"い")+(5>=1)   2
5  5  >  1                   (5>1)   1
 
H2
="("&CONCAT(IF(A2:G2="and",")*(",IF(A2:G2="or",")+(",IF(ISNUMBER(A2:G2)+ISNUMBER(FIND(A2:G2,"<>=<=")),A2:G2&"",""""&A2:G2&""""))))&")"
Ctrl+Shift+Enter同時押し
下方向・↓
I2
=IF(Evalu,"○","×")
下方向・↓

回答
投稿日時: 21/04/14 17:25:41
投稿者: んなっと

VBAの場合、
 
vba evaluate
 
でGoogle検索。

回答
投稿日時: 21/04/14 17:34:52
投稿者: んなっと

あと、まさかこのタイプの質問で「文字列の大小」が必要になるとは思いませんでした。
 
おそらくは興味本位の付け足しでしょうから、
文字列がらみの不具合の可能性については省略します。

トピックに返信