以下代码应该很接近 - 根据需要进行调整。它不是为了提高效率而写的——除非你有成千上万的项目要复制,否则这将“完全没有时间”。该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”的工作表中的目标工作表(顶行带有标签,复制的日期显示在其下方):
显然有很多方法可以使这个更干净(destination
例如,在复制之前清除标签下方的所有空间,这样就不会留下旧值)。在“真实”代码中,您将添加错误处理等。
不过,这应该可以帮助您。