こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル・条件によって式を変えたい(IFを使用?)

A1、A2、A3 そして A4(計算式の回答用)というセルがあるとき、
A1のみに数字を入力した時
A1、A2に数字を入力した時
A1、A3に数字を入力した時
などで、それぞれの条件で計算式を変えて、他のセル(A4)に計算結果を導く方法はありますか?

たとえば、
A1のみに10を入力した時、A4にはA1*10で100
A1に10、A2に50を入力した時、A4にはA1/2+A2*2で105
A1に20、A3に50を入力した時、A4にはA1*A3で1000
などのようにです。

投稿日時 - 2008-05-11 15:00:42

QNo.4014165

困ってます

質問者が選んだベストアンサー

単純にIFの入れ子でいいでしょう。

=IF(AND(A1<>"",A2="",A3=""),A1*10,IF(AND(A1<>"",A2<>"",A3=""),A1/2+A2*2,IF(AND(A1<>"",A2="",A3<>""),A1*A3,0)))

どの条件にも当てはまらない場合はゼロにしています。

投稿日時 - 2008-05-11 15:17:44

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

(1)IF関数をネストすれば出来ることは理論的にすぐ判る。
質問の主旨はなに?
こまめにIFをネスとするのが邪魔くさいのかな。
(2)2つ条件でAND条件ならAND関数、OR条件ならOR関数を使えばよい
(3)数字という点にチェックを入れるならISNUMBER関数
それと空白で無いがAND条件
>などで、それぞれの
「など」が曲者で、質問の様なのは個別に式を組み立てざるを得ないタイプで、ほかにも例や条件が加わると、(1)(2)(3)を使って出直しです。
A1-A3の例ですが、質問の為に例を少なくしてあって、実際ではA10までとかになると、長くなって式を考える気がしない。(Fは以前はネストの深さ7まで)
====
IF関数でネストしないで実質同じ様にできるやり方・場合
AND条件の場合
A列       B列    B列の関数
1a=IF((ISNUMBER(A1))*(A1<>""),"a","")
a=IF((ISNUMBER(A2))*(A2<>""),"a","")
3a=IF((ISNUMBER(A3))*(A3<>""),"a","")

1a=IF((ISNUMBER(A5))*(A5<>"")*(ISNUMBER(A6))*(A6<>""),"a","")
4
のように「*」を使えば、比較式を並べるだけで、1個のIFだけで条件該当分を捉えられる。
==
この質問の範囲内での工夫
A1は常に空白でない場合を取り上げ、A2が空白でない、A3が空白で無いと考えて式を組み立てるような工夫
==
テーブル化できないか考えたが、式の文字列を与えて、セルの関数式
にするのはVBA(.Formula)で無いと出来ない.
関数では他ソフトのEVALUATEのようなのはない。念のため。

投稿日時 - 2008-05-11 18:43:42

ANo.3

=IF(ISNUMBER($A$1),CHOOSE(($A$2>0)*1+($A$3>0)*2+1,$A$1*10,$A$1/2+$A$2*2,$A$1*$A$3,0),0)
で如何でしょう。

投稿日時 - 2008-05-11 16:26:43

ANo.1

IFを使えば式でもなんとかなりそうですが、
これだけ複雑であればマクロの方がいいと
思います。

投稿日時 - 2008-05-11 15:05:49

あなたにオススメの質問