- ベストアンサー
エクセルで、入力数字を自動的に代入し結果表示させたい
入力した数字を自動的に代入し、その結果をそれぞれ表示させるにはどうしたらよいのでしょうか。具体的には A列 B列 C列 1行 10 20 A1またはB1を引っぱって表示 2行 30 40 C1がA1のときA2、C1がB1のときB2を表示 3行 C3結果表示 C3結果表示 C1+C2の計算式 A1、A2、B1、B2は手入力します。 C1でA1が代入された場合C2にはA2が代入され、C3はC1+C2を計算し、その結果40をA3に表示させる。 また、C1でB1が代入された場合C2にはB2が代入され、C3は計算結果60を表示させる。 というようにしたいのです。C1、C2、A3、B3にはどのような計算式を入れればよいのか教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
こんばんわ。早速サンプルマクロを作ってみました。以下のように操作してみて下さい。 1.データの入っているブックを立ち上げ、ALT+F11キーを押してVBE画面を表示させ、画面左上のVBAProjectと書かれている上にマウスポインターを合わせて右クリック後、挿入→クラスモジュールを順にクリックし、表示された右側の白い部分に下記のコードをコピー&ペーストする。 Public WithEvents App As Application Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim myRow As Integer myRow = Target.Row If Target.Address = Range("B" & myRow).Address Then Application.EnableEvents = False Worksheets(1).Range("A3").Value = ActiveSheet.Range("A3").Value Worksheets(1).Range("A2").Value = ActiveSheet.Range("A2").Value Worksheets(1).Range("A1").Value = ActiveSheet.Range("A1").Value ActiveSheet.Range("A4").Value = Worksheets(1).Range("A4").Value Application.EnableEvents = True End If End Sub 2.次に画面左上のVBAProjectと書かれている下のThisWorkbookをダブルクリックし、表示された右側の白い部分に下記のコードをコピー&ペーストする。 Dim myClass As New Class1 Private Sub Workbook_Open() Set myClass.App = Application End Sub 3.保存してブックを終了し、再度立ち上げる。 シート1以外のB列に値を入力してみて下さい。貴方様の思い通りの動作が実現できます。 ご不明な点・不具合等がありましたら、ご遠慮なくお知らせ下さい。私のわかる範囲でご一緒に考えていきたいと思います。
その他の回答 (6)
- kazuhiko5681
- ベストアンサー率49% (79/159)
こんばんわ。 >入力セルをシート2、シート3・・・のA1、B2、B3とした場合にはどうしたら良いのでしょうか。 A1・B2・B3の順に入力するのであれば、このままで問題なく動作します。もし違う場合は、貴方様のおやりになりたいことを具体的に詳しく教えて下さい。よろしくお願いいたします。
お礼
度々ありがとうございます。 問題なく動作しました。いろいろとご親切にありがとうございました。
- kazuhiko5681
- ベストアンサー率49% (79/159)
おはようございます。貴方様のおやりになりたいことは、マクロを組めば簡単に実行できると思います。 折角マクロで所得税の計算をさせているのですから、その計算結果を所得税欄に表示させるという風にすればよろしいのではないでしょうか。 >所得税の計算まではシート1を使ってマクロで計算できた このマクロをすべて教えていただければ、貴方様の思い通りに動作するサンプルマクロを組むことができるかと思います。ご希望の節は、次のこともあわせて教えて下さい。 ・シート2・シート3・・・等の列構成とセル番地 お手数をおかけいたしますが、よろしくお願いいたします。
補足
親切にありがとうございます。 マクロを組んだといってもフリーソフトをコピーしただけで、マクロの扱いを知りません。 列構成とセル番地ですが、 シート1は所得税計算のマクロが組まれていて、A1、A2、A3を手入力すると所得税の計算をします。A1に賃金総額、A2に社会保険料控除額、A3に扶養家族数、A4に所得税となっています。 シート2、シート3、シート4・・・は職員のシートで皆同じ列構成となっており、これもシート1と同じにしてあります。 A1に賃金総額、A2に社会保険料控除額、A3に扶養家族数、A4に所得税です。 シート2のA1、A2、A3は、時間外時間の入力等をB列にすることにより自動計算されるよう計算式がはいっています。 計算の流れとしては、シート2のB列を入力した結果出たA1、A2、A3をシート1のA1、A2、A3に入力しその結果出た所得税額A4をシート2のA4に戻す。これをシート3、シート4・・・と職員人数分こなすということをやらせたいのですが、これで具体的に作業ができますでしょうか。
- misatoanna
- ベストアンサー率58% (528/896)
ご質問の例題そのままのケースですと、 A3: =IF(C1=A1,C3,"") B3: =IF(C1=B1,C3,"") C2: =HLOOKUP(C1,A1:B2,2,FALSE) でよいと思うのですが――C1の「A1またはB1を引っぱって表示」という意味がわかりませんので、当然 C1 の式はわかりません。 引っ張ってくる条件というのは何なのでしょうか。
補足
質問の趣旨がわかりずらいところ、早速のご回答ありがとうございます。 前述したとおりですが、ご回答いただけませんか。
- imogasi
- ベストアンサー率27% (4737/17069)
>A1またはB1を引っぱって表示 (1)A1やB1は文字列のA1やB1のどちらかをいれるってことか。 (2)A1の値の10やB1の値の20が入ればと言うことか。 >引っ張って 引っ張るとは何か。値A1かB1をいれるセルがあって、たとえばE1として、C1には=E1となっていると言うことか。 >C1がA1のときA2、C1がB1のときB2を表示 A2とはA2セルの値30、B2とはB2の値40のことか ---- (1)として、 C1セルの演算式は=if(c1="A1",A2,B2) C2セルの演算式は=C1+C2 A3セルの演算式は=C3, B3セルの演算式は=C3, これらはあまり疑問・質問になる点は思いつかず、質問の 主旨を捉えてなければすみません。
補足
質問の趣旨がわかりずらいところ、早速のご回答ありがとうございます。 前述したとおりなのですが、教えていただけませんか。
- misatoanna
- ベストアンサー率58% (528/896)
ご質問の例題そのままのケースですと、 A3: =IF(C1=A1,C3,"") B3: =IF(C1=B1,C3,"") C2: =HLOOKUP(D1,A1:C2,2,FALSE) でよいと思うのですが――C1の「A1またはB1を引っぱって表示」という意味がわかりませんので、当然 C1 の式はわかりません。 引っ張ってくる条件というのは何なのでしょうか。
補足
質問の趣旨がわかりずらいところ、早速のご回答ありがとうございます。 前述したとおりなのですが、教えていただけませんか。
- kazuhiko5681
- ベストアンサー率49% (79/159)
初めまして。C1にA1かB1を引っぱってきて表示ということですが、○○という時にA1・××という時にB1を表示というように○○又は××という条件がないと実行することができません。C2・C3・A3・B3に関しましては、次の式を挿入すれば自動実行することができます。 C2に挿入する式 =if(C1=A1,a1,if(C1=B1,B1,"")) C3に挿入する式 =C1+C2 A3に挿入する式 =if(C1=A1,C3,"") B3に挿入する式 =if(C1=B1,C3,"") C1の挿入する式をお知りになりたい時は、○○・××という条件を教えて下さい。すぐに再回答します。またマクロを組めば、各セルに式を入力するという手間をかけずに自動で実行することができます。もしよろしければサンプルマクロを組んでみたいと思います。もしご希望でしたらその旨もお知らせ下さい。 お手数をおかけいたします。よろしくお願いいたします。
補足
質問の趣旨がわかりずらいところ、早速のご回答ありがとうございます。 A1:B2は入力用で任意の数字が入ります。 C列は計算式が入っている列で、A1、A2の入力を受けてA列の計を計算、B1、B2の入力を受けてB列の計を計算します。そして、それぞれの計算で出た結果をA3、B3に表示する。 この場合のC1、A3の計算式をどうした良いのか迷っています。 私のやりたいことは、給与計算で、各人の賃金総額、社会保険料控除額、扶養者の人数がわかっていて、各々の所得税を計算し、その結果を給与明細に転記したいのです。所得税の計算まではシート1を使ってマクロで計算できたのですが、シート2にA氏の給与明細、シート3にB氏の給与明細をそれぞれ表示したいのです。シート2にA氏の賃金総額等必要な数字を入力すると、シート1で所得税を計算し、その結果をシート2のA氏の給与明細の所得税欄に表示する。シート3にB氏の賃金総額等必要な数字を入力すると、シート1で所得税を計算し、その結果をシート3のB氏の給与明細の所得税欄に表示する。というように、計算するシートは1つで、そこに代入する数字が変わると計算結果が異なって出力され、それを他のシートに転記する、そんな計算ができないものか悩んでいるのです。それを単純化したつもりが、かえってわかりずらくしてしまったようですみません。
補足
驚きました。本当にできました。ありがとうございます。見ず知らずの方なのに、こんなに親切に教えていただいて大感激です。 厚かましい限りで恐縮ですが、ついでに応用でお願いできますでしょうか。 入力をB列にしたため、 If Target.Address = Range("B" & myRow).Address Then の行があるのだと思うのですが、入力セルをシート2、シート3・・・のA1、B2、B3とした場合にはどうしたら良いのでしょうか。どうか教えてください。