[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『変更したデータの履歴を別のシートに残す方法が分かりません』(やよい)
まとめのシートから別のシートへデータを履歴として残したいのですが分かりません。
どなたかご教授お願いします。
(Excel2003を使用)
こんな感じのファイルです↓
"まとめ"シートの表
F G H I #001 #002 #003 #004 10 Ver 1 1 2 1 11 日付 2010/10/5 2010/11/2 2010/10/5 2010/12/1 12 担当 佐藤 山田 佐藤 鈴木 13 値 3000 450 2510 800
たとえば、F列のデータが一つでも変更になった場合
別に作成した"#001"のシートへデータが反映され、
履歴として隣の列に残るというような
↓↓
"#001"シートの表
F G H I 現在 1 2 3 10 Ver 1 1 2 3 11 日付 2010/10/5 2010/11/5 2010/12/5 2010/12/20 12 担当 佐藤 佐藤 佐藤 佐藤 13 値 3000 3000 3000 3500
というような感じで"まとめ"シートからG、H列も同様に#002、#003〜と変更したデータの履歴を残したいです。
説明が上手くできていないかもですがよろしくお願いします。
#001シートのF列に列挿入して、まとめシートのF列をコピーペーストでは?
自動でという事ならVBAになると思います。 (momo)
#001〜#035まであるため自動で履歴が残せるようにしたいと思ってます。
VBAで可能でしょうか?
可能ですよ。 Worksheet_ChangeイベントでTargetの列の9行目の値のシートに F列を挿入してTarget列の10〜13行をコピーペーストするだけです。 (momo)
#001〜#035分のシートへの履歴を残す方法としてどういうVBAを作成するのか、
VBAはまったくわからないため、詳細を教えていただけないでしょうか。
よろしくお願いします!!
まったく解らないままですと、どこから説明して良いのかわかりませんが 上の回答で書かれた単語くらいは調べてみましたか? あとは、1つの列だけでもマクロ記録を取ってみるくらいはしてみましたか? (momo)
もう少し補足。
仮に#001の列をやるとしてマクロ記録を取ると
Sub Macro1() Selection.Copy Sheets("#001").Select Range("F10").Select Selection.Insert Shift:=xlToRight Application.CutCopyMode = False End Sub
というコードが生成されますね。 このコードを見やすく整理すると
Sub Macro2() Selection.Copy Sheets("#001").Range("F10").Insert Shift:=xlToRight End Sub
こうなります。 ですが、これではコピー範囲がSelectionで選択した範囲なので コピーする範囲をまとめシートのF11:F14の範囲に変更します。
Sub Macro3() Sheets("まとめ").Range("F11:F14").Copy Sheets("#001").Range("F10").Insert Shift:=xlToRight End Sub
するとこうなりますよね? ここで、まとめシートの変更した場所によって変化するのが >Sheets("まとめ").Range("F11:F14").Copy の"まとめ"と"F11:F14" あとは >Sheets("#001").Range("F10").Insert Shift:=xlToRight の"#001"です。
ここを可変できるようにして セル内容が変化した時のイベントであるWorksheet_Changeイベントを使って 変化したセルであるTargetで可変出来るようにすれば良いです。
(momo)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.