次のコードは近いはずです - 必要に応じて調整してください。これは効率のために書かれたものではありません。何千ものアイテムをコピーする場合を除き、これには「まったく時間がかかりません」。このApplication.ScreenUpdating
トリックは、更新中に画面がちらつくのを防ぎます (そして、速くします)。
Option Compare Text
Sub moveStuff()
Dim rLabel As Range
Dim rLabelSource As Range
Dim rDestination As Range
Dim c, L
' first label:
Set rLabel = ActiveWorkbook.Worksheets("source").Range("A2")
' extend all the way down:
Set rLabel = Range(rLabel, rLabel.End(xlDown))
Set rLabelSource = ActiveWorkbook.Worksheets("destination").Range("A1")
Set rLabelSource = Range(rLabelSource, rLabelSource.End(xlToRight))
Application.ScreenUpdating = false
' labels in the top row:
For Each L In rLabelSource.Cells
' write results in the next row down:
Set rDestination = L.Offset(1, 0)
For Each c In rLabel.Cells
If c.Value = L.Value Then
rDestination.Value = c.Offset(0, 1).Value
Set rDestination = rDestination.Offset(1, 0)
End If
Next c
Next L
Application.ScreenUpdating = true
End Sub
この場合、日付とラベルは「ソース」というシートにあります。
そして、「宛先」と呼ばれるシートの宛先シート(一番上の行にラベルがあり、その下にコピーされた日付が表示されます):
明らかに、これをきれいにする方法はたくさんあります (destination
たとえば、コピーする前にラベルの下のすべてのスペースをクリアして、古い値が残らないようにします)。そして、「実際の」コードでは、エラー処理などを追加します.
ただし、これでうまくいくはずです。