• ベストアンサー

エクセルの数式が、、、。

(1)A1が0のとき、0。    1のとき、固定の数値100(仮)。    2以上のとき、固定の数値300(仮)。  上の条件では、数値は2種類しかありません。  さらに、A2が0のとき、そのまま。         1のとき、そのまま。         2のとき、2倍。         3のとき、3倍、、、、、、、、。  という数値を、A3に返したい。 (2)A1が0のとき、0。     1のとき、A2*0.4のプラスマイナスを逆転させた数値。     2以上のとき、0。  で、さらにA3が0のとき、そのまま。         1のとき、そのまま。         2のとき、2倍。         3のとき、3倍、、、、、、、、。  という数値を、A3に返したい。 (3)A1が0のとき、0。     1のとき、固定の数値100(仮)。     2以上のとき、固定の数値100(仮)*2。  で、さらにA2が0のとき、そのまま。           1のときは、固定の数値100(仮)*3。           2のときは、固定の数値100(仮)*4。           3のときは、固定の数値100(仮)*5、、、、、、。  で、A3が0のときは、0(A1、A2関係なく)。       1のときは、そのまま。       2のときは、上記の数値の倍。       3のときは、上記の数値の3倍、、、、、、、。  という数値を、A4に返したい。 このときの、数式を教えて欲しいのです。 とても分かりずらいと思いますが、どなたか教えていただけないでしょうか。

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

  • ベストアンサー
回答No.7

こんばんわ。#4の補足に書かれた条件でサンプルマクロを組むと下記の様になります。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$B$1" Then Exit Sub If Range("B1").Value = 1 Then Call Sheet1.myKeisan1 ElseIf Range("B1").Value = 2 Then Call Sheet1.myKeisan2 End If End Sub Sub myKeisan1() Select Case Range("A2").Value Case 0 Range("A4").Value = 0 Case 1 Select Case Range("A3").Value Case 0, 1 Range("A4").Value = 100 Case 2 Range("A4").Value = 200 Case 3 Range("A4").Value = 300 End Select Case 2 Select Case Range("A3").Value Case 0, 1 Range("A4").Value = 200 Case 2 Range("A4").Value = 400 Case 3 Range("A4").Value = 600 End Select End Select End Sub Sub myKeisan2() Select Case Range("A2").Value Case 1 Select Case Range("A3").Value Case 0, 1 Range("A4").Value = CInt(Range("A1").Value) * -1 Case Else Range("A4").Value = CInt(Range("A1").Value) * CInt(Range("A3").Value) * -1 End Select Case Else Range("A4").Value = 0 End Select End Sub もし、このマクロの操作方法をお知りになりたい時は、お知らせ下さい。

chimik
質問者

お礼

何度も回答ありがとうございます。 じっさいマクロを走らせてみましたが、 やはり素人の私には少し難しいようです。 今回の件は、質問には書かなかったのですが、 そういったセット(今回のを1セットとして)同じシートで7セット作らなくてはいけなくて、そのためやはり数式で表現したいです。 今回の質問は、少し抽象的すぎ、反省しております。 今回は、とりあえず締め切ります。次回、近いうちに具体的な数字と、その数式を使用するのあたっての状況を詳しく書いて、また質問を投稿したいと思います。 そのときは、また協力していただけるとありがたいです。 今回は、マクロの作り方が分かり、少しエクセルの知識が増えたような気がします。 ほんとに、ありがとうございました。

その他の回答 (6)

回答No.6

こんばんわ。投稿ボタンを間違えて押してしまいました。#3の補足で書かれた条件でサンプルマクロを組んでみました。シート1の1行目は、マクロを動作させるために必要な行として使わせていただきますので、データの入力は2行目以降になります。マクロもミスが見つかりましたので、下のマクロを使って下さい。 まず、次のようにマクロを新規ブックにコピー&ペーストして下さい。 ・新規ブックを開き、ALT+F11キーを押してVBE画面を表示させ、画面左上のVBAProjectと書かれている下のSheet1をダブルクリックして表示された画面の右側の白い部分に下記のコードをコピー&ペーストする。 ALT+F11キーでエクセルの画面にもどり、次のように操作します。 1.A2以降にデータを入力する。 2.最後に、A1で計算の方法を指定する。(A1を抜けた時点でマクロが走りますので、一番最後に指定しないとエラーが起こる場合があります。) 計算方法の指定の仕方 (1)の時1・(2)の時2・(3)の時3(数字は半角英数で指定して下さい。) Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub If Range("A1").Value = 1 Then Call Sheet1.myKeisan1 ElseIf Range("A1").Value = 2 Then Call Sheet1.myKeisan2 ElseIf Range("A1").Value = 3 Then Call Sheet1.myKeisan3 End If End Sub Sub myKeisan1() If Range("A2").Value = 0 Then Range("A5").Value = 0 Else Range("A5").Value = 36000 End If End Sub Sub myKeisan2() Select Case Range("A2").Value Case 1 If Range("A3").Value = 0 Then Range("A7").Value = 14000 * -1 Else Range("A7").Value = 14000 * CInt(Range("A3").Value) * -1 End If Case Else Range("A7").Value = 0 End Select End Sub Sub myKeisan3() Select Case Range("A2").Value Case 0, 1, 2 Range("A6").Value = 0 Case 3 If Range("A4").Value = 1 Then If Range("A3").Value = 0 Then Range("A4").Value = 6500 Else Range("A4").Value = 6500 * CInt(Range("A2").Value) End If End If Case 4 If Range("A4").Value = 1 Then If Range("A3").Value = 0 Then Range("A4").Value = 6500 Else Range("A4").Value = 6500 * CInt(Range("A2").Value) End If ElseIf Range("A4").Value = 2 Then If Range("A3").Value = 0 Then Range("A4").Value = 13000 Else Range("A4").Value = 13000 * CInt(Range("A2").Value) End If End If End Select End Sub もし、マクロを動作させるために1行目を使わない方がよろしければ、他の方法でマクロを動作させることも可能です。その時は、お知らせいただければそのようにマクロを変更させていただきますので、ご遠慮なくお知らせ下さい。

回答No.5

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub If Range("A1").Value = 1 Then Call Sheet1.myKeisan1 ElseIf Range("A1").Value = 2 Then Call Sheet1.myKeisan2 End If End Sub Sub myKeisan1() If Range("A2").Value = 0 Then Range("A5").Value = 0 Else Range("A5").Value = 36000 End If End Sub Sub myKeisan2() Select Case Range("A2").Value Case 1 If Range("A3").Value = 0 Then Range("A7").Value = 14000 * -1 Else Range("A7").Value = 14000 * CInt(Range("A3").Value) * -1 End If Case Else Range("A7").Value = 0 End Select End Sub Sub myKeisan3() Select Case Range("A1").Value Case 0, 1, 2 Range("A6").Value = 0 Case 3 If Range("A3").Value = 1 Then If Range("A2").Value = 0 Then Range("A3").Value = 6500 Else Range("A3").Value = 6500 * CInt(Range("A2").Value) End If End If Case 4 If Range("A3").Value = 1 Then If Range("A2").Value = 0 Then Range("A3").Value = 6500 Else Range("A3").Value = 6500 * CInt(Range("A2").Value) End If ElseIf Range("A3").Value = 2 Then If Range("A2").Value = 0 Then Range("A3").Value = 13000 Else Range("A3").Value = 13000 * CInt(Range("A2").Value) End If End If End Select End Sub

回答No.4

初めまして。 (1)で、 ・A1が0の時  A2が0・1・2・3であってもA3に0を表示 ・A1が1の時  A2が0・1ならばA3に100(仮)を表示  A2が2ならば、A3に200(仮)を表示  A2が3ならば、A3に300(仮)を表示 ・A1が2の時  A2が0・1ならばA3に300(仮)を表示  A2が2ならば、A3に600(仮)を表示  A2が3ならば、A3に900(仮)を表示 ということでよろしいのでしょうか。 (2)についても同様の考え方でよろしいのでしょうか? (3)についても同じような要領で条件を書いていただけないでしょうか。 このないようでは、貴方様のおやりになりたいことがよく理解できません。 お手数をおかけいたしますが、よろしくお願いいたします。

chimik
質問者

補足

>初めまして。 はじめまして。 下のように訂正しました。 (3)は複雑になるのであきらめました。 これで、どうでしょうか。 (1)も若干変更しました。 >(1) ・A1が0の時  A2が0・1・2・3であってもA3に0を表示 ・A1が1の時  A2が0・1ならばA3に100(仮)を表示  A2が2ならば、A3に200(仮)を表示  A2が3ならば、A3に300(仮)を表示 ・A1が2の時  A2が0・1ならばA3に200(仮)を表示  A2が2ならば、A3に400(仮)を表示  A2が3ならば、A3に600(仮)を表示 >(2) ・A1が0の時  A2が0・1・2・3・4‥であってもA3に0を表示 ・A1が1の時  A2が0・1ならばA3に-40(仮)を表示  A2が2ならば、A3に-80(仮)を表示  A2が3ならば、A3に-120(仮)を表示  以下、4以降続きます。 ・A1が2以上の時  A2が0・1・2・3・4‥であってもA3に0を表示

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

>とても分かりずらいと思いますが--良く判らない。 (1)(1)と(2)と(3)の関係は? (2)例えば(1)で下表のa-lはどうなるのでしょう? A1とA2の値は両方ともA3の値に影響するのですよね?   A2 |0  |1 |2 |3 |   A1 |  | |  | |    --|----------   0  | a|b |c |d |  1 | e |f|g |h | 2 | i|j |k |l | (3)(3)はA1とA2とA3の3項目関連しているのですか? (4)IF文とVLOOKUP関数のネストで出来そうなんですが 問題文の条件の意味が捉えられない。 (4)符号反転は-1を掛ければよい。 (5)こう言う複雑になると、VBAでIF文のネストCASE文とIFの組み合わせ方が素直に表現できそう。

chimik
質問者

お礼

回答ありがとうございます。 やはり、マクロは素人の私には向いてないようです。 また、次の機会には分かりやすい質問にしますのでよろしくお願いします。

chimik
質問者

補足

 はじめまして。 下のように訂正しました。 これで、どうでしょうか。 書いてないセルは反映しなくていいです。 若干変更しました。そして、全てに関連性をもたせました。(1)、(2)、(3)のA1~6は同一セルです。 >(1) A1が0の時、他のセルに関係なくA5は0を表示 A1が1以上の時、A5に36000を表示。 >(2) ・A1が0の時  A2が0・1・2・3・4‥であってもA7に0を表示 ・A1が1の時  A2が0・1ならばA7に-14400を表示  A2が2ならば、A7に-28800を表示  A2が3ならば、A7に-43200を表示  以下、4以降続きます。 ・A1が2以上の時  A2が0・1・2・3・4‥であってもA7に0を表示  >(3) ・A1が0・1・2の時  A2、A3が0・1・2・3であってもA6に0を表示 ・A1が3の時  A3が1の時  A2が0・1ならばA3に6500を表示  A2が2ならば、A3に13000を表示  A2が3ならば、A3に19500を表示  以下、4以降続きます。 ・A1が4の時  A3が1の時  A2が0・1ならばA3に6500を表示  A2が2ならば、A3に13000を表示  A2が3ならば、A3に19500を表示  以下、4以降続きます。  A3が2の時  A2が0・1ならばA3に13000を表示  A2が2ならば、A3に26000を表示  A2が3ならば、A3に39000を表示  以下、4以降続きます。  

回答No.2

入力した数値に小数部が含まれていても、整数部だけを見る事にします。負の数値は 入力されないことを期待しています。 (1) =if(int(A1)>=2,300,int(A1)*100)*if(int(A2)<=1,1,int(A2)) (2) =if(int(A1)=1, -0.4*A2,0)*if(int(A3)<=1,1,int(A3)) (3) =if(int(A2)=0,min(int(A1),2),int(A2)+2)*100*int(A3) とまぁ、こんな感じでいかがでしょうか?

chimik
質問者

お礼

ありがとうございます。 やっぱり、数式ですと、アレンジがききますよね。 素人でも「こことここを変えれば・・・」と、とても参考になりました。 ただ、若干こちらの表現のまずさのせいでしょう。 私の意図する結果が出ませんでした。 でも、全部数式で書いてくださってありがとうございました(礼)。

  • KODAMAR
  • ベストアンサー率26% (267/1006)
回答No.1

(1) =IF(A13=0,0,IF(A13=1,100,IF(A13>=2,300,""))) です。

chimik
質問者

お礼

ありがとうございます。 A3の倍数がないみたいですが それさえあれば完璧でした。 私の質問の書き方が少し分かりづらかったのかもしれません。 でも、すぐ数式を書けるなんてすごいですね。

関連するQ&A

  • 数式を教えてください。(エクセル)

    教えてください。 A1セルに100、B1に200、C3に-300 A2セルに-50、B2に50、C3に-50 があるとします。 で、縦の計算法を常に引き算をしたいのです。(A1-A2のように) オートSUMの場合、Aの列はちゃんと計算できると思うのですが、そうするとBの列は250になってしまいますよね。 この答えは200-50=150としたいのです。 またC列は、-300引く-50で、答えは-250としたいのですが・・・ マイナスを認識しつつ、セルの数値がプラス・マイナスにかかわらず すべて引き算計算をしたいのですが、 そういう数式ってありますか?

  • excelの数式がわかりません!

    こんにちわ、超初心者です。EXCELの数式で困っています。 ●セルB2にA2から1マイナスした数を表示させます。単純に、 =A2-1 ですよね。●さらにこの数式の答えのなかから、-1以下は0と表示させたいのですが、この二つの条件を満たす式がわかりません!! どなたか教えて下さい!よろしくお願いします。

  • EXCELの数式

    EXCELの数式で質問がございます。 セルA1の数値からB1の数値を足したを足した場合に 40までの場合は、そのまま数値を表示(C1)し41以上に なった場合は、40に表示させたい。 例1)3+20=23 例2)20+20=40 例3)27+20=47 例3の場合は、47となってしまっていますが これを40に表示したい。 宜しくお願い致します。

  • エクセルの数式について!

    初歩的な質問ですが、ある数式の解がマイナスになる場合はゼロにしたいのですが 例えば、=MIN(MAX(A1-A2,B1-B2),3)この解がマイナスになる場合にゼロという条件式を追加したいのですが、どうすればいいのでしょう?IF関数だと思うのですが・・・。よろしくお願いします。

  • エクセルの数式質問

    条件1.)A列の1行目から10行目までのセルに数値が入っているとします。 条件2.)A1からA10までの全てのセルに数値が入っているわけではなく、とびとびで入力されている。 この場合に、A10もしくは、よりA10に近いセルに入力してある数値を返す数式はどのようになるでしょうか? さらに、1~10行目のセル内に数値が何も入っていない場合には、空白を返してほしいのです。 よろしくお願いします。

  • エクセルの数式

    教えてください! =IF(R1="5","",Q3+1) 簡単に言いますと、"5"の時は空白セルにして、それ以外はQ3の数値に1をプラスする数式なんですが、 "5"だけじゃなく、"7"の時や"9"の時も空白セルにしたいんです。 OR関数を組み合わせればいいんですか? 複数の条件を理論値に置く時はどおしたらいいんですか?

  • エクセルの数式で困っています

    入力数値によって数字が変わるという計算式を作成していますが 例 A1セル=1000 B1セル= 1~10  C1セル=A1*1*0.7  ※C1セル答え700 A1セル=1000 B1セル=11~20  C1セル=A1*1.3*0.7   ※C1セル答え910 A1セル=1000 B1セル=21~30  C1セル=A1*1.6*0.7   ※C1セル答え1120 A1セル=1000 B1セル=31~30  C1セル=A1*1.9*0.7   ※C1セル答え1330 B1セルが10増えていく毎にC1セルのA1に対する掛け率が変わってきます 1~10=1.3倍 11~21=1.6倍 30~41=1.9倍 :  720~731まで 上記のように10増える毎に0.3倍づつ増えていきます A1セルは色々な数値が入り、B1セルに数値を入力しC1セルに答えを出すといった事で 現在IF関数をつかってやっていますが分岐にも限界があるので・・・・ 現在の数式です。 =IF(B1<=10,A1,IF(B1<=20,A1*1.3,IF(B1<=30,A1*1.6,IF(B1<=40,A1*1.9))))*0.7 わかりづらい説明で申し訳ありませんが ご教授宜しくお願い致します

  • Excelの数式の打ち込み方で???

    Excelで、Aに対してbは何割にあたるのか、割合を計算する数式を使いたいのですが、どのように数式をうちこんだらよいのでしょうか? もう少しくわしく言いますと・・・。 E列に2行目から10行目までのセルに、9つの数(仮にb)が打ち込まれています。それらの数が、D列11行のセル上の数(仮にA)に対して、何割にあたるのかを自動的に計算したいのです。 b÷Aでその割合は出るわけですが、Excel上ではどのように処理すればその計算ができるのかよくわかりません。 fxのところから数式を打ち込もうと思っても、関数の種類がアルファベットでならび、どれを選択したらよいのかもわかりません。 わからないことの説明がへたで申し訳ありませんが、もし質問の意味がわかり、やり方がわかる方がいらっしゃいましたら、ご回答ください。 数式関係に不慣れですみません。 よろしくお願いします。

  • EXCEL 数式が入った空白セルを数える

    毎度お世話になっています。 質問の内容ですが、例えば下記のようなシートがあるとします。 セルB1、セルC1、セルD1:手入力セル セルA1:数式「=IF(B1="","",B1+C1)」 セルA2:文字列 セルA3:数式「=IF(D1="","",D1*0.1)」 セルA4:文字列 セルA5:A1+A3の計算結果を表示 (※なお、セルA2、A4は数値が入らない) というような場合において、 ●セルB1、C1、D1になにも入力されていない場合、セルA5が空白となる。 ●セルB1、C1にのみ数値が入力されている場合、セルA5の計算結果がセルA1の値のみ。 ●セルD1にのみ数値が入力されている場合も上記と同様に計算結果が表示される。 以上の条件を満たす数式をセルA5に入力したいのですが、 COUNTBLANKは数式が入っている場合には使えず、COUNTAの場合だとセルA1、A3のどちらにも数値が入った場合に表示される、といった数式になります。 IFをいくつも使えば可能とは思いますが、もう少し単純に数式を作れたらと思い質問をさせて頂きました。 よろしければ御回答宜しくお願い致します。 (内容を訂正したため、いったん質問を削除しました。もし御回答中の方が居ましたら申し訳ありませんでした。)

  • エクセル 数式のコピー

    エクセルの基本レベルで恐縮ですが、下記のような 数式のコピーの方法がわかりません。 教えていただければ幸いです。 (例えば)    B1 A2 B2 A3 B3 A3 B4 ●求めたい数式 B2=B1+A2 B3=B1+A3 B4=B1+A4 ●ところが、上記B2の数式を入力した後、B2のセルをコピーし B3とB4にペーストすると B3=B2+A3 B4=B3+A4 このようになってしまいます。 どのようにしたら、求めたい数式のようなコピペが 出来るのでしょうか? (B1自体が1個の数値なので、その数値を数式に入れるという回答は無しで、あくまで数式のコピペでお願いします。) 基本レベルで恐縮ですが、何卒よろしくお願いします。