ここから本文です

エクセル,IF関数の条件式、 =IF(AI30>=80,"優",IF(AI30>=70,"良",IF(AI30>=60,"可...

col********さん

2019/1/615:29:30

エクセル,IF関数の条件式、
=IF(AI30>=80,"優",IF(AI30>=70,"良",IF(AI30>=60,"可",IF(OR(AI30<60,AI30="*",""),""))))
と書いて、セルの値が80以上で優、70以上で良、60以上で可、60未満または「*」ならば空白を返

すようにしたかったのです。ところがこの式では、60未満の数値のときは「#VALUE!」が、またセルの値が「*」のときは「優」が帰ってきます。この式のどこをどう修正すると目的の式になりますか。

閲覧数:
133
回答数:
4

違反報告

ベストアンサーに選ばれた回答

アバター

ID非公開さん

2019/1/617:11:40

おそらくAI30に入るのは0以上の数値か、「*」だけなのではありませんか。

60未満または「*」ではなくて、
60未満または非数値なら空白でいいのならIF関数など使わなくても例えば

=LOOKUP(N(AI30),{0,60,70,80},{"","可","良","優"})

とか、LOOKUP系の関数を使った方がいいんじゃないかと思います。

  • 質問者

    col********さん

    2019/1/719:33:39

    ご教示、ありがとうございます。私の一度も使ったことのないLOOKUP関数で簡潔な表現、大変驚きました。感動です。申し訳ありませんがN(AI30)のNの部分が理解できません。解説していただけませんか。

  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

2019/1/615:58:07

比較演算では、すべての文字列はあらゆる数値より大きい扱いになります。だから"*"は80以上に含まれます。

逆に「60未満またはアスタリスク」から分けていけば、アスタリスクが80以上に含まれることはないでしょう。

=if(or(AI30<60, AI30="*"), "", if(AI30<70, "可", …

all********さん

2019/1/615:53:40

mar********さん の式では
* 以外 の文字なら優

*は特殊です
=IF(CODE(AI30)=42,"",IF(COUNT(AI30),IF(AI30>=80,"優",IF(AI30>=70,"良",IF(AI30>=60,"可","")))))

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

maronさん

2019/1/615:37:11

=IF(A2="*","",IF(A2>=80,"優",IF(A2>=70,"良",IF(A2>=60,"可",""))))

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる