プロが教える店舗&オフィスのセキュリティ対策術

ちょっと伝えづらいのですが
何とか読み取って頂けますと幸いです。

できると助かる動作は以下の通りです。


●シートの1つを「入力」、もう1つを「集計」として、まず「入力」のシートへ、
-----------------------
2012/5/1 
No  名前    料金
1  山田太郎 1000円
----------------------
と入力したとします。
※添付画像を御覧ください。

●次に「集計」シートの方へは入力した情報を元に
===========
2012/5/1 山田太郎 1000円
===========
という形で表示させる

●また「入力」シートへ戻り、今度は
----------------------
2012/5/1
No  名前    料金
2  山田花子 3000円
----------------------
と入力内容を変更します。
そしてまた「集計」のシートを見たとき

===========
2012/5/1 山田太郎 1000円
         山田花子 3000円
===========
と加わっている。
このような動作はマクロやVBAを使えばできるのでしょうか?

できるとすればやり方をご教授願います。

初心者の為、うまく伝えることができず申し訳ありませんが
宜しくお願いします。

「エクセルでこのようなことはできますか?」の質問画像

A 回答 (4件)

できない事もないけど、入力した内容を次々と上書きするなら、VBAでマクロを組まないとできないと思います。


私がするなら「集計に追加する」ボタンを置いて、それが押された時に集計のシートに書き込むようにするかな。

でも本当に簡単にするなら、次のように下に追記させる様に入力させます。
これなら集計はピボットテーブルを使えば簡単に入力に連動した表が作れますから。
それに、先のVBAで作る方法でも、一度は他のシートに下と同じようにデータを並べてからピボットテーブルで集計させた方が簡単にできると思います。
----------------------
No  日付   名前   料金
1  2012/5/1 山田太郎 1000円
2  2012/5/1 山田花子 3000円
----------------------
    • good
    • 0
この回答へのお礼

なるほど!
「集計に追加する」ボタンの設置はいいですね!

ピボットテーブルという機能もあるんですね、
今後の参考になりました。

ご回答いただきありがとうございます!

お礼日時:2012/05/02 15:42

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/menu0 …

また、Excel vbaについての質問は、下記のサイトの方が良いと思います。
http://www.moug.net/index.html
    • good
    • 0
この回答へのお礼

データフォームというやり方もあるんですね。

なるほど。


>ご自分でやってみて、つまづいたところの回答をもらうようにしないと・・・
そうですよねぇ。。自分で勉強しないと始まらないですよね。。
ご紹介頂いたサイト等を活用して勉強していきます。

回答頂きありがとうございました。

お礼日時:2012/05/02 10:52

こんばんは!



(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
「エクセルでこのようなことはできますか?」の回答画像3
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。

さっそくこちらのコードで試させて頂いた所、
イメージにピッタリでした!

ただ「入力」シートへ名前と料金を入力して、確定(enter押下)させると
「集計」シートの方へ反映されますが、その時点で入力した内容が消えますよね?

これを残したまま、「集計」シートの方へ値だけ集計させる。という
事は無理でしょうか。

お礼日時:2012/05/02 10:48

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
    • good
    • 0
この回答へのお礼

おおおお!

まさに求めていた処理です!

ホントに助かりました。ありがとうございます!

他の方からの指摘があったとおり、
今後自分でもある程度作成できるように勉強したいと思います。

お礼日時:2012/05/02 15:41

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