[[20140312091611]] 『「>」の使い方』(業務中) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『「>」の使い方』(業務中)

初質問です。 よろしくお願いします。

比較演算子「>」を関数式で使いたいのですが、セルが数値でない場合の
処理はどうしたらいいでしょうか?

例)
B列にデータ(数値、空欄、文字)があり、ある値以上の時に印を付したい
この場合、「=IF(B2>1,"*","--")」というA列の関数式ではセルが文字の場合も
「*」が付いてしまう。 これを回避したい。

備考)
・B列にある文字はいろいろあるので、特定できない
・マクロは知識なし

ざくっと本欄を検索してはみましたが、同内容の質問回答がありましたら
ご容赦ください。

< 使用 Excel:unknown、使用 OS:WindowsXP >


 こうかな?
 =IF(N(B2),IF(B2>1,"*","--"),"--")

 N関数は、数値になるものは数値に、それ以外は0(False)になります。

(稲葉) 2014/03/12(水) 09:25


 「1」より大きい数値。の条件っぽいので

 =IF(N(B2)>1,"*","--")

 ってのも
  
(GobGob) 2014/03/12(水) 09:48

 N関数だけでは出来ない場合もあるね。(空白無視、ゼロ値含むとか)

 いろいろ考慮して。

 Excel2003以前 =IF(ISERR((B2&"")*1),"--",IF(B2>1,"*","--"))

 Excel2007以降 =IFERROR(IF((B2&"")*1>1,"*","--"),"--")
 
(GobGob) 2014/03/12(水) 09:56

 勉強になります!
 一つ教えてください。

 >N関数だけでは出来ない場合もあるね。(空白無視、ゼロ値含むとか)
 ということで、この二つを検証していましたが、N関数で出来ない場合が思いつかないので
 教えてください!
 =IF(N(B2)>1,"*","--")
 =IFERROR(IF((B2&"")*1>1,"*","--"),"--")
 こういう結果になりました。
値	[N]	[B2*1]
0	--	--
1	--	--
2	*	*
n	--	--
n1	--	--
'1	--	--
'2	--	--
#N/A	#N/A	--
""	--	--

(稲葉) 2014/03/12(水) 10:49


 たとえば 文字、空白、空白文字列、数値のデータがあるとして
 N関数だと、文字はすべて「0」、空白セルも「0」を認識してしまいます。

 「数値のゼロ」と「文字&空白セル時のN関数ゼロ」を区別するには不足かな?と。

 今回の業務中さんの例は「B2セルが「1」より大きい」が条件だけど
 「B2セルが「-1」より大きい」とかの場合はN関数だと不具合になっちゃいますね。

 今回の例ではN関数で出来るけど、いろいろ考えるとN関数だけでは不足しそう。
 って判断しました。
 
(GobGob) 2014/03/12(水) 10:57

 B2>-1で試してみました。
 なるほど納得です!
 大変分かりやすい説明ありがとうございました!
値	[N]	[N+]
0	*	*
1	*	*
2	*	*
n	*	--
n1	*	--
'1	*	--
'2	*	--
#N/A	#N/A	--
""	*	--

(稲葉) 2014/03/12(水) 11:04


 もし、エラー値考慮なしなら

 =IF(AND(B2>1,CELL("type",B2)="v"),"*","--")

 ってのもありですねー。

 ※CELL関数つかうとさらに表示形式で判断もできそう。
 
(GobGob) 2014/03/12(水) 11:19

GobGobさん、稲葉さん

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

ひとつ前の式中の「(B2&"")*1」ですが、これは「空欄」を「#VALUE!」にして
空欄でも処理できるようにしていると理解してよろしいですか?

いろいろ応用できそうです..

(業務中) 2014/03/12(水) 11:41


 B2&"" は

 B2が文字列(たとえば「あ」)なら
   「=B2 → "あ"」「=B2&"" → "あ"&"" → "あ"」

 B2が空白文字列なら
   「=B2 → ""」「=B2&"" → ""&"" → ""」

 B2が空白セルなら
   「=B2 → 0」「=B2&"" → ""&"" → ""」

 B2が数値(たとえば「100」)なら
   「=B2 → 100」「=B2&"" → 100&"" → "100"」

 B2がゼロ数値なら
   「=B2 → 0」「=B2&"" → 0&"" → "0"」

 と処理、これらを四則演算すると(*1っすね)数値の文字列以外はエラーと
 なる。

 ってことっす。

 >これは「空欄」を「#VALUE!」にして 空欄でも処理できるようにしていると理解してよろしいですか? 

 なんかニュアンスが違うけど「空白を考慮して」って感じっすかね?
 
(GobGob) 2014/03/12(水) 13:18

 =IF(AND(COUNT(B2),B2>1),"*","--")
(笑) 2014/03/12(水) 13:44

GobGobさん

丁寧な説明ありがとうございます。
よく理解したつもりでしたが、IF式以外への応用が覚束なく
次のケースはどうしたらいいでしょうか?

A列にグループ、B列にデータがあり、数値があるセルに対し「グループ別の順位」を求めたい

データが数値のみであれば、
C列=SUMPRODUCT(($A$2:$A$100=A2)*($B$2:$B$100>B2))+1
で順位が求められます。

が、データに文字等が含まれると、文字種により様々な順位が出現します。
(文字等;アルファベットや空白、記号など)

「>」の本質的なところがまだまだ理解できてなく、助言お願いします。

(業務中) 2014/03/12(水) 16:11


 TEXT関数で文字列なら…みたいなかんじ?

 けど、($B$2:$B$100<10^16)*($B$2:$B$100<>"")

 の条件付加でも良さそうですなぁ。
(GobGob) 2014/03/12(水) 16:34

 >($B$2:$B$100<10^16)

 ($B$2:$B$100<"") でもいけるかな?
 ※iPhoneからの投稿なので試してまへん
(GobGob) 2014/03/12(水) 16:42

 C2セルに
 =IF(ISNUMBER(B2),SUMPRODUCT(($A$2:$A$100=A2)*($B$2:$B$100>B2)*ISNUMBER($B$2:$B$100))+1,"")
 
 マジメに回答してるんだから無視しないで、お願いだから。
(笑) 2014/03/12(水) 16:55

笑さん

無視なんてしていません..
GobGobさんの“つぶやき”かなっと思ってました。(^^;)

=IF(AND(COUNT(B2),B2>1),"*","--")ですね、うまくいきました!

ただ、セルがエラー値の時はそのままエラー値が出るので、
ちょっと..というところです。

でも、これでも十分です。 ありがとうございました。

最新の回答については、GobGobさんのも含め
時間とれしだい確認させていただきます。

(業務中) 2014/03/12(水) 17:45


笑さん

うまくいきました!
SUMPRODUCTに他の関数をネストできるなんて知りませんでした。

ありがとうございます。 

今から帰宅します。

今日は仕事をほったらかして充実した一日でした(笑)

GobGobさん

すみません..回答の意味が今一わからず..

(業務中) 2014/03/12(水) 21:48


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.