• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルでこのようなことはできますか?)

エクセルでデータ入力と集計を自動化する方法はあるか?

このQ&Aのポイント
  • エクセルでのデータ入力と集計を自動化する方法について教えてください。
  • 特定のシートに入力した情報をもとに、別のシートで集計結果を表示する方法を知りたいです。
  • 初心者ですが、エクセルでデータの入力と集計を自動化する方法を教えてください。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.3です。 お礼欄の >ただ「入力」シートへ名前と料金を入力して、確定(enter押下)させると >「集計」シートの方へ反映されますが、その時点で入力した内容が消えますよね? >これを残したまま、「集計」シートの方へ値だけ集計させる。という >事は無理でしょうか について・・・ 「入力」Sheetのデータは行方向にどんどん入力していく訳ですかね? もしそうであれば前回のコードは無視して↓のコードに変更してみてください。 尚、「入力」SheetのB列データ変更時にマクロが実行されるようにしていますので、 「入力」SheetはA列入力 → B列入力 の順に行ってください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から On Error Resume Next If Intersect(Target, Columns(2)) Is Nothing Or Target = "" Then Exit Sub Dim i, k As Long Dim ws As Worksheet Set ws = Worksheets("集計") k = Target.Row i = ws.Cells(Rows.Count, 1).End(xlUp).Row With ws.Cells(i + 1, 1) .Value = ws.Cells(Rows.Count, 1).End(xlUp).Row With .Offset(, 1) .Value = Range("A1") .NumberFormatLocal = "yyyy/m/d" End With .Offset(, 2) = Range("A" & k) .Offset(, 3) = Range("B" & k) End With End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m

brooke-hog
質問者

お礼

おおおお! まさに求めていた処理です! ホントに助かりました。ありがとうございます! 他の方からの指摘があったとおり、 今後自分でもある程度作成できるように勉強したいと思います。

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! (1)ユーザーフォームで処理する (2)「入力」Sheetにコマンドボタンを配置し、クリックでマクロを実行する といった方法が最適だと思いますが、 ここでそのコトを書いても横道にそれてしまいますので 極力ご希望に近い形となると、データ入力時にマクロを実行する方法だと思います。 Noの部分は単に連番で良いわけですかね? そういうことだとしての一例です。 ↓の画像のような感じにしています。 (NOは勝手に連番表示させていますので、「入力」Sheetの「NO」の欄はなしにしています) 画面左下の「入力」SheetのSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Range("A3:B3")) Is Nothing Or _ WorksheetFunction.CountBlank(Range("A3:B3")) Then Exit Sub Dim i As Long Dim ws As Worksheet Set ws = Worksheets("集計") i = ws.Cells(Rows.Count, 1).End(xlUp).Row With ws.Cells(i + 1, 1) .Value = ws.Cells(Rows.Count, 1).End(xlUp).Row With .Offset(, 1) .Value = Range("A1") .NumberFormatLocal = "yyyy/m/d" End With .Offset(, 2) = Range("A3") .Offset(, 3) = Range("B3") End With Range("A3:B3").ClearContents End Sub 'この行まで ※ 最初からすべてを理解するのは難しいかもしれませんが、 こんな感じのコトが出来る!って感じで試してみてください。m(_ _)m

brooke-hog
質問者

お礼

ご丁寧にありがとうございます。 さっそくこちらのコードで試させて頂いた所、 イメージにピッタリでした! ただ「入力」シートへ名前と料金を入力して、確定(enter押下)させると 「集計」シートの方へ反映されますが、その時点で入力した内容が消えますよね? これを残したまま、「集計」シートの方へ値だけ集計させる。という 事は無理でしょうか。

  • saekikkt
  • ベストアンサー率60% (378/622)
回答No.2

Excelには、貴方の質問に似たような機能に「データフォーム」機能があります。 これが使えるかどうかは解りませんが、勉強してください。 http://allabout.co.jp/gm/gc/297800/ 「Excel データフォーム」で検索すれば、色んな解説がされています。 もちろん、VBAで作成することも可能でしょうが、・・・ 例えば、 http://www.serpress.co.jp/excel/vba004.html >できるとすればやり方をご教授願います。 でもここで初心の貴方が、一から回答をもらうことは、無理です。 ご自分でやってみて、つまづいたところの回答をもらうようにしないと・・・ そのためには、まずVBAの基礎からの勉強が必要です。 http://www.asahi-net.or.jp/~ef2o-inue/menu/menu04.html また、Excel vbaについての質問は、下記のサイトの方が良いと思います。 http://www.moug.net/index.html

brooke-hog
質問者

お礼

データフォームというやり方もあるんですね。 なるほど。 >ご自分でやってみて、つまづいたところの回答をもらうようにしないと・・・ そうですよねぇ。。自分で勉強しないと始まらないですよね。。 ご紹介頂いたサイト等を活用して勉強していきます。 回答頂きありがとうございました。

  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.1

できない事もないけど、入力した内容を次々と上書きするなら、VBAでマクロを組まないとできないと思います。 私がするなら「集計に追加する」ボタンを置いて、それが押された時に集計のシートに書き込むようにするかな。 でも本当に簡単にするなら、次のように下に追記させる様に入力させます。 これなら集計はピボットテーブルを使えば簡単に入力に連動した表が作れますから。 それに、先のVBAで作る方法でも、一度は他のシートに下と同じようにデータを並べてからピボットテーブルで集計させた方が簡単にできると思います。 ---------------------- No  日付   名前   料金 1  2012/5/1 山田太郎 1000円 2  2012/5/1 山田花子 3000円 ----------------------

brooke-hog
質問者

お礼

なるほど! 「集計に追加する」ボタンの設置はいいですね! ピボットテーブルという機能もあるんですね、 今後の参考になりました。 ご回答いただきありがとうございます!