从一张纸上复制一列,寻找一个空的列并将其粘贴到另一张纸上

问题描述 投票:0回答:1

这里需要一点帮助。我对VBA相当陌生,我只是想出了此代码,并研究了其他代码并尝试对其进行研究。

我有两个标签:“数据”和“审核”。在“数据”选项卡中,我要复制“ c2:c1000”列中的值,并粘贴到“审计”选项卡的“ a1”列中。我有一段代码,每次我运行宏后,我都会在“数据”选项卡的“ c”列中随机分配值(我在那里很好)。现在,当我运行它时,我希望将新值复制并粘贴到“ b1”列中,因为“ a1”列已经具有来自先前宏运行的值。我想在每次运行宏时重复一次。同时在“审核”(Audit)选项卡中每个粘贴列的第1行上,我都会在运行宏时添加一个时间戳记。

这是我到目前为止所拥有的,

Dim x As Long
Dim lastRow As Long

lastRow = Worksheet("Data").Cells(3, Columns.Count).End(xlUp).Column

For x = 1 To lastRow
    If Worksheets("Audit").Cells(2, "A") = "" Then
        Worksheets("Data").Range("c2:c1000").Copy Destination:=Worksheets("Audit").Range(1, "A")

        Sheets("Audit").Range("A1").Value = Format(Now, "mm/dd/yyyy HH:mm:ss")

    Else
        Worksheets("Data").Range("c2:c1000").Copy Destination:=Worksheets("Audit").Cells(2, 
        Columns.Count).End(xlToLeft).Offset(, 1)
       'Sheets("Audit").Range("A1").Value = Format(Now, "mm/dd/yyyy HH:mm:ss") --> can't figure how to increment this as this will need to be on the subsequent empty column 
End If

Next
End Sub

您的帮助将不胜感激!如果您还可以指导我理解您的逻辑,以便我更好地理解,那将非常有帮助。

谢谢。

excel vba loops copy-paste
1个回答
0
投票

与源工作表的LastRow变量非常相似,为目标工作表创建一个LastColumn变量,它将以与查找最后使用的行相同的方式查找最后使用的列。

例如:

Dim LastColumn As Long
LastColumn = Sheets("Audit").Cells(1, Columns.Count).End(xlToLeft).Column

然后像这样使用变量:

Destination:= Worksheets("Audit").Cells(1, LastColumn)

[您的代码似乎也与您的问题相矛盾,在您的问题中,您解释说数据将每次使用下一列写入第1行的审核表,但您的代码会在If的第2行中查找值声明:

If Worksheets("Audit").Cells(2, "A") = "" ThenIf Worksheets("Audit").Range("A2") = "" Then相同。

如果要检查第一行,请将2更改为1

© www.soinside.com 2019 - 2024. All rights reserved.