さて、私は同様の質問を探しようとしましたが、ExcelのVBAエディターを見るのは初めてなので、何が議論されているのかよくわかりませんでした。
簡単に言うと、「Sheet1」と「Sheet2」の2つのスプレッドシートがあります。
シート1:
A B
1 Header1 Header2
2 Text1 Info1
3 Text2 Info2
シート2:
A B
1 Header1 Header2
2 Text3 Info3
3 Text4 Info4
そして、次のように、2つのシートを新しいシート(Sheet3)にマージするマクロが必要です。
A B
1 Header1 Header2
2 Text1 Info1
3 Text2 Info2
4 Text3 Info3
5 Text4 Info4
マクロを記録して、後で使用するために保存してみました。これを行うには、新しいシートを作成し、Sheet1からSheet3まですべてをコピーして貼り付けてから、Sheet2からSheet3までの見出しを除くすべての情報をコピーします。
マクロはこのデータに対して機能しますが、Excelによって生成されたコードによってマクロが作成されるため、データを貼り付ける前にセルA4(ここ)が選択されることがわかりました。これはこのデータでは機能しますが、各シートのレコード数が何度も変更されると機能しません。基本的に、
1)次のデータセット(この例ではセルA4、もう1つのテーブルがある場合はセルA6)を貼り付ける前に、最後の関連セルに自動的に移動する関数があるかどうか疑問に思いました。
2)関数「ActiveCell.SpecialCells(xlLastCell).Select」(Ctrl + Endを使用するとアクティブになります)を見ましたが、それでシートの最後に移動します。最適に機能させるには、その機能を使用した後、「ホーム」および「下」矢印キーに似たものが必要になります。
これらのオプションのいずれかが私に適しています。^ _ ^
これが、Excel2010でマクロレコーダーから記録された現在のVBAコードです。
Sub Collate_Sheets()
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Select
Sheets(Sheets.Count).Name = "Sheet3"
Sheets("Sheet1").Select
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Sheets("Sheet3").Select
ActiveSheet.Paste
ActiveCell.SpecialCells(xlLastCell).Select
' I need to select one cell below, and the cell in column A at this point
Sheets("Sheet2").Select
Range("A2").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet3").Select
ActiveSheet.Paste
End Sub
役に立つ情報を忘れていないことを願っています。私がやったかどうか教えてください!