dポイントプレゼントキャンペーン実施中!

エクセル2000にてIF関数を使った式を作っています。
A1セルに時間、A2には"緑?" そしてA3には数字(1~10)が入力されています。関数はA4に入ります。
=IF(AND(A1>=TIMEVALUE("8:00"),A1<TIMEVALUE("18:00")),IF(A2="緑",A3,IF(A2="緑1",0.5,IF(A2="緑2",1,IF(A2="緑3",1.5,IF(A2="緑4",2,IF(A2="緑5",2.5,0)))))),0)
このように長いのですが、短くする方法はありますか?

朝8時から18時の間で、A2セル=緑ならA3、A2セル=緑1なら0.5・・・・と続きます。
この後も緑6のときは3、緑7は3.5ともう少し続けた式を加える予定もあります。
ご指導よろしくお願いします。

A 回答 (6件)

vlookup使えば、IF(A2="緑1",0.5(…以下略)の部分は簡単にできるんではないかと思います。

この回答への補足

お答えありがとうございます。
A2に入力規則のリストが作ってあるので、これで簡単にいけそうです。
参考になりました。

補足日時:2009/04/07 22:17
    • good
    • 0
この回答へのお礼

VLOOKUP(A2="緑1",緑リスト,3,0)と名前の定義で範囲指定してみました。とてもうまくいっています。ありがとうございました。

お礼日時:2009/04/13 06:39

NO3です。


>COUNTIF(A2,"緑*")はなぜ必要なのでしょうか?
⇒既にWendy02様にて回答済みですので参考まで。
ご例示では「緑?」以外は「0」とされていたので妥当性を判定したかった(私は入力条件を事前に判定する癖があります)為です。
    • good
    • 0

こんばんは。


#4の回答者です。

>COUNTIF(A2,"緑*")はなぜ必要なのでしょうか?

=IF(COUNTIF(A2,"緑*"),IF(AND(A1>="8:00"*1,A1<"18:00"*1),IF(A2="緑",A3,SUBSTITUTE(A2,"緑","0")*0.5),0),"")

この数式では、"緑"がないという条件を含めないと、エラーが発生してしまうからです。他に探してみましたが、見つからないので、それで、COUNTIF(A2,"緑*") を入れることにしました。また、A1>="8:00"*1 は、TimeValue関数を使わなくても良いです。#3さんの数式とは、同じCOUNTIF 関数の内容ですが、私の方は、エラー回避として用いています。

なお、IF(COUNTIF(A2,"緑*").. だけで、COUNTIF(A2,"緑*")>0 という意味になります。
    • good
    • 0
この回答へのお礼

詳しい説明ありがとうございます。
COUNTIF(・・・・の式は他にも色々と使えそうですね。
TimeValue関数を使わないだけでも式が短くなるので助かります。
大変参考になりました。ありがとうございました。

お礼日時:2009/04/08 06:41

こんにちは。



支障がない限りは、元のままでもよいと思います。
以下は、「緑」の隣に、数字が入れてあれば、ずっと計算します。

=IF(COUNTIF(A2,"緑*"),IF(AND(A1>="8:00"*1,A1<"18:00"*1),IF(A2="緑",A3,SUBSTITUTE(A2,"緑","0")*0.5),0),"")
    • good
    • 0
この回答へのお礼

お答えありがとうございます。
文字列の操作でもできますね!参考になりました。
文字列操作はわかるのですが、
COUNTIF(A2,"緑*")はなぜ必要なのでしょうか?
ちょっと難しくてこの式が理解できませんでした。

お礼日時:2009/04/07 22:28

緑7まで対応していますが如何でしょうか。


=IF(AND(A1>=TIMEVALUE("8:00"),A1<TIMEVALUE("18:00"),COUNTIF(A2,"緑*")),IF(A2="緑",A3,IF(RIGHT(A2,1)*1<8,RIGHT(A2,1)*1*0.5,0)),0)
    • good
    • 0
この回答へのお礼

お答えありがとうございます。
文字列の操作でもできますね!参考になりました。
文字列操作はわかるのですが、
COUNTIF(A2,"緑*")はなぜ必要なのでしょうか?
ちょっと難しくてこの式が理解できませんでした。

お礼日時:2009/04/07 22:26

直接の回答ではありませんが、



=LOOKUP(B1,{"緑1","緑2","緑3";0.5,1,1.5})

=VALUE(MID(B1,2,1))*0.5

この2つの数式を試してみてください。
    • good
    • 0
この回答へのお礼

お答えありがとうございます。
普段VLOOKUPは良く使うのですが、LOOKUPは表がいらないので便利ですね。
MID関数とは!奥が深いです。
大変参考になりました。

お礼日時:2009/04/07 22:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!