IFで複数の条件と値をいれる時に条件の範囲が重なる時どうすればいいしょうか…
例えばaとbの値に関してaが500未満の時は5B。
aが500以上2000未満かつbが1000未満の時は5A。
aが2000以上5000未満かつbが1000以上の時は4。
aが5000以上10000未満かつbが3000以上の時は3
aが10000以上20000未満かつbが5000以上の時は2
aが20000以上かつbが10000以上の時は1
aが20000以上かつbが30000以上の時はA
aが20000以上かつbが60000以上の時はA'
としたいのですが、bの条件がかぶってるため例えばaが10000でbが10000になっても答えが2になってくれず、0で表示されてしまいます。
どなたか解決方法が、わかる方いらっしゃいましたらお願い致します。
式は
=if(and(a1>=500),"5B",if(and(a1>=500,a1<2000,b1<1000),"5A",if(and(a1>=2000,a1<5000,b1>=1000),"4",if(and(a1>=5000,a1<1
0000,b1>=3000),"3",if(and(a1>=10000,a1<20000,b1>=5000),"2",if(and(a1<=20000,b1<=10000),"1",if(and(a1>=20000,b1>=30000),"A",if(and(a1>=20000,b1>=60000),"a'",))))))))
と式を立てましたがうまくいきません
どなたかわかる方がいらっしゃいましたらお願い致します。
A 回答 (10件)
- 最新から表示
- 回答順に表示
No.10
- 回答日時:
こんにちは!
解決できたのでしょうか?
少しやっかいかも知れませんが、自身で関数を組み込む手もありますよ。
添付にVBAにてコーディングした例をつけています。
(条件式を順に記述しているので分かり易い利点があります。)
・A,Bどちらかがブランクであればヌル("")を返す
・先に指摘をされている未定義の範囲は「未定義範囲」を返す
このfunctionを組み込めば、「=Eval(a5,b5)」のようにして使用可能
No.9
- 回答日時:
こんばんは!
一案です。
↓の画像のようにSheet2の別表を作成しておきます。
行・列項目値(薄い緑色セル)は〇以上というコトになります。
尚、質問内容では画像の表内(B2~H7セル)の入力しているセルしか条件が判断できませんので、
判らない部分は空白にしています。
実際の条件に合わせて空白セルを埋める必要があります。
Sheet1のC2セルに
=INDEX(Sheet2!$B$2:$H$7,MATCH(A2,Sheet2!$A$2:$A$7,1),MATCH(B2,Sheet2!$B$1:$H$1,1))
という数式を入れています。
これでA・B列にデータを入力すると、C列に表内データが表示されます。
※ A・B列条件が空白セルにヒットすると「0」が表示されてしまいます。
IF関数をネストしても構わないと思いますが、表の作成次第ではすっきりできると思います。
参考になれば良いのですが・・・m(_ _)m
No.8
- 回答日時:
No.3です。
もしも私なら、無理して1つのセルに長い式を書くよりも、こうします。各セルに次のとおり入力。すると、C:Hの列範囲に値の大小によるaの階層が、I:Qにbの階層が、「0」か「1」の数字で表示されます。また、R:Yにも、「5B」に該当する場合はその列が「1」となり、その他の列が「0」と表示されます。
C3 =0+($A3<500) D3 =(500<=$A3)*($A3<2000)
E3 =(2000<=$A3)*($A3<5000) F3 =(5000<=$A3)*($A3<10000)
G3 =(10000<=$A3)*($A3<20000) H3 =0+(20000<=$A3)
I3 =0+($B3<1000) J3 =0+($B3=1000)
K3 =(1000<$B3)*($B3<=3000) L3 =(3000<$B3)*($B3<=5000)
M3 =(5000<$B3)*($B3<=10000) N3 =(10000<$B3)*($B3<=30000)
O3 =(30000<$B3)*($B3<60000) P3 =0+($B3=60000)
Q3 =0+(60000<$B3)
R3 =C3 S3 =D3*I3
T3 =E3*SUM(J3:Q3) U3 =F3*SUM($I3:K3)
V3 =G3*SUM($I3:L3) W3 =$H3*N3
X3 =$H3*O3 Y3 =$H3*SUM(P3:Q3)
No.7
- 回答日時:
先の回答で表とすべきでしたが罫線が入らないので見難いと思いますので添付にExcelで作成した表をつけました。
表中黄色の部分が未定義領域となります。表の下に関数を入れてテストした結果をつけています。
テストした数式は添付でも明示していますが、
=IF(A<500,"5B",IF(A<2000,IF(B<1000,"5A",""),IF(A<5000,IF(B<1000,"",IF(B>=1000,"4","SSSSS")),IF(A<10000,IF(B>=3000,"3","DDD"),IF(A<20000,IF(B<3000,"","2"),IF(B<10000,"",IF(B<30000,"1",IF(B<60000,"A","A'"))))))))
こんなものです。
数式中未定義エリアの部分は""、であったり"DDD"、"SSSSS"となっていますがご了承ください。
No.6
- 回答日時:
提示された条件を整理してみました。
a b 定義
500未満 5B
500~2000未満 1000未満 5A
?
2000~5000未満 ?
1000以上 4
5000~10000未満 ?
3000以上 3
10000~20000未満 ?
5000以上 2
20000~ ?
10000以上 1
30000以上 A
60000以上 A'
のように?を付した箇所は何を定義するのか不明になっています。
この内容によっては条件の簡素化が図れるかもしれませんよ。→ 関数も簡略化?
(極端な例ではbだけで決定することにもなりかねませんね。)
No.5
- 回答日時:
ANo.4です。
補足します。>IFで複数の条件と値をいれる時に条件の範囲が重なる時どうすればいいしょうか…
何かが優先するはずですので、条件が重なるということはないはずです。aとbの表で条件を整理すると判りやすいと思います。
IF関数は、優先するほうから決めて行きます。
"2"の条件で、(a1>=10000,b1>=5000)として、a1<20000は使ってません。上位から定義していけば、a1<20000は必要ありません。a=30000でも"1"の条件を満たさなければ"2"です。a1<20000を入れると、"2"の条件から逆に外れてしまいます。
No.4
- 回答日時:
まず明らかな入力ミスが、冒頭のa1>=500の他に下から2行目の
and(a1<=20000,b1<=10000) が、and(a1>=20000,b1<=10000)
条件を表などで整理するとよいと思います。
提示された条件からは、
・a=800,b=800
・a=2400,b=400
の場合、判定が不明です。補足説明からこれは、それぞれ5Aとなるのですね。
それなら、条件式を下位(5B)からでなく、上位(A')から定義すべきです。
=if(and(a1>=20000,b1>=60000),"A'",if(and(a1>=20000,b1>=30000),"A",if(and(a1>=20000,b1>=10000),"1",if(and(a1>=10000,b1>=5000),"2",if(and(a1>=5000,b1>=3000),"3",if(and(a1>=2000,b1>=1000),"4",if(and(a1>=500,b1<1000),"5A","5B")))))))
No.3
- 回答日時:
IF関数の入れ子で書くと、しっちゃかめっちゃかで難しいですね。
代わりに、こういうのはどうですか?=if(a1<500,"5B",)&if((500<=a1)*(a1<2000)*(b1<1000),"5A",)&if((2000<=a1)*(a1<5000)*(1000<=b1),4,)&if((5000<=a1)*(a1<10000)*(3000<=b1),3,)&if((10000<=a1)*(a1<20000)*(5000<=b1),2,)&if((20000<=a1)*(10000<=b1)*(b1<30000),1,)&if((20000<=a1)*(30000<=b1)*(b1<60000),"A",)&if((20000<=a1)*(60000<=b1),"A'",)
bの条件が足りないところがまだあるかもしれませんが、それは質問者さん自身でないとよく分かりませんので、適当に式を修正してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) IFとCOUNTIFSの組み合わせのAND条件が偽になる 6 2022/08/27 21:26
- Excel(エクセル) エクセルでIF関数中にIFERROR関数を使いたいのですが???? 5 2022/04/08 13:24
- Excel(エクセル) ExcelのIF関数 2 2022/04/14 16:11
- Excel(エクセル) エクセル関数教えてください 3 2022/06/21 10:22
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Excel(エクセル) If関数に関する質問です。(再掲) 3 2022/10/01 20:51
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) Excel表示形式 2 2022/09/09 09:57
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】スペースがいくつ入っ...
-
西暦や和暦の表示をyyyymmdd表...
-
Excelのセルを飛ばして入力する
-
Excelのオートフィル
-
別シートからの文字を変更
-
Excel 2019 のピボットテーブル...
-
エクセルの行の抽出について質...
-
【マクロ】エクセルにかいてあ...
-
スプレッドシート クエリ関数 1...
-
エクセルでセルに「氏名を入力...
-
MOS365 Excel Expert / Excel R...
-
excelの不要な行の削除ができな...
-
EXACT関数とIF関数の組み合わせ...
-
スプレッドシートの関数VLOOKUP...
-
Excelで全角を半角にしたいので...
-
Excel初心者です。 詳しい方、...
-
エクセルの数式で教えてください。
-
4つのパターンを表示するEXACT...
-
スマートな関数を教えて下さい。
-
【Excel】セル内の時間帯が特定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報