[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『「>」の使い方』(業務中)
初質問です。 よろしくお願いします。
比較演算子「>」を関数式で使いたいのですが、セルが数値でない場合の
処理はどうしたらいいでしょうか?
例)
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
うまくできました! ありがとうございます。
ひとつ前の式中の「(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
丁寧な説明ありがとうございます。
よく理解したつもりでしたが、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.