久しぶりに会心の macro が書けたので、誰の得にもならないと知りつつ
自己満足を抑えることができずに、blog にアップすることにした。
sheet2 と sheet8 を行ったり来たりしながら、とあるデータの山をいじくり
まわしている。1070個とかあるデータから500個を抜き出し、抽出した
データをもとに版下データを print out する予定なんだが、macro を
使わないでやってた作業が、
sheet8 のとあるセルの数値を sheet2 の X列で探し、それを起点にした
8*9マスのデータを sheet2 の L列に順にコピペしていく。ただしコピーの
前にさっき参照した sheet8 のセルの4つ右にあるセルのデータをコピペ
したいエリアの右下に書き込む。コピペの後にエリアの左下2マスには前回の
処理で記録されている書式をコピーする。さらに次回検索するデータを
適当な場所に張り付けておく、というややこしくて、ミスを誘発する手順。
これが Macro のお世話になると、1分以上かかっていた作業がものの10秒。
試行錯誤の結果、まあまあ満足のいくものが出来た。使い方は、
1.検索のダイアグラムの入力欄をダブルクリックする。
(クリックだけではデータを書き足すので、ダブルクリックは必須。)
2.さっき適当なところに張り付けておいたデータがクリップボードに残って
いるので、それをペースト。
3.X列を指定して検索。
X列のデータがシリアルナンバーと時間データが混在しているため、
検索結果を判断しながら、ターゲットのセルを決める。
4.あとは ctrl+q(ショートカットキー)でMacro が走りだす。
問題は、これを500回やらねばならないこと。世の中、GWってんで浮かれ
てるようですが、きっといつか飯のタネになるんだと信じて、飽きずに
コツコツと進めなければならない。え、進捗状況ですか?。現在153/500です。
本日のマクロ
Sub Macro5()
'
' Macro5 Macro
'
' Keyboard Shortcut: Ctrl+w
'
Sheets("Sheet8").Select
ActiveCell.Offset(0, 4).Select
Selection.Copy
Sheets("Sheet2").Select
ActiveCell.Offset(8, 5).Select
ActiveSheet.Paste
ActiveCell.Offset(-8, -5).Select
Selection.Range("a1:i9").Select
Selection.Copy
Range("l5071").Select
Selection.End(xlUp).Select
Selection.Offset(3, 0).Select
ActiveSheet.Paste
Selection.Offset(-4, 0).Select
Selection.Range("a1:a2").Select
Selection.Copy
Selection.Offset(10, 0).Select
ActiveSheet.Paste
Sheets("Sheet8").Select
ActiveCell.Offset(1, -4).Select
Selection.Copy
Sheets("Sheet2").Select
ActiveCell.Offset(1, 22).Select
ActiveSheet.Paste
End Sub