我目前正在开发一个 Excel 宏,其中我将数据从一个工作表(sheet1)获取到当前已经在工作的另一个工作表(sheet2)。但是,我想确保如果sheet1中的数据发生更改(例如,当新的报告季度开始时),新数据不会复制到现有数据之上,而是复制到现有数据之下。
我目前有以下代码,仅根据特定值(“应计第三季度 - 2023 年”)复制数据。有了绿色的注释,我尝试将数据复制到lastrow + 1,这效率不高。
参见以下代码:
Sub Accruals()
Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim i As Long
Dim j As Long
Dim LastRowCopy As Long
Dim LastRowDest As Long
Set wsCopy = Worksheets("Sheet1")
Set wsDest = Worksheets("Sheet2")
LastRowCopy = wsCopy.Cells(Rows.Count, "A").End(xlUp).Row
LastRowDest = wsDest.Cells(Rows.Count, "A").End(xlUp).Offset(1).Row
j = 1
For i = 1 To LastRowCopy
If wsCopy.Cells(i, 9).Value = "Accrual Q3 2023 - " Then
wsCopy.Rows(i).Copy
wsDest.Rows(j + 1).PasteSpecial xlPasteValues
'wsCopy.Rows(i).Range("A2:K" & LastRowCopy).Copy
'wsDest.Rows(j).Range("A" & LastRowDest).PasteSpecial xlPasteValues
j = j + 1
End If
Next i
End Sub
我遇到的另一个问题是我根据“Accrual Q3 2023 - ”限制复制的数据。目前,仅选择具有此精确文本的变量。但是,我想知道是否可以进行此限制,可以指定前几个字母而不是整个文本。在普通 Excel 中,可以使用 Left 函数来实现此目的。这在 VBA 中也可能吗?
如果能收到有关我的两次斗争的意见,我将不胜感激。 预先感谢您。
我尝试了各种方法将数据复制到当前数据的最后一行之后。此外,我还看了很多 youtube 视频。
请你试试这个:
Sub Accruals()
Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim i As Long
Dim j As Long
Dim LastRowCopy As Long
Dim LastRowDest As Long
Set wsCopy = Worksheets("Sheet1")
Set wsDest = Worksheets("Sheet2")
LastRowCopy = wsCopy.Cells(Rows.Count, "A").End(xlUp).Row
LastRowDest = wsDest.Cells(Rows.Count, "A").End(xlUp).Row 'modified
j = 1
For i = 1 To LastRowCopy
If wsCopy.Cells(i, 9).Value = "Accrual Q3 2023 - " Then
wsCopy.Rows(i).Copy
wsDest.Rows(LastRowDest + j).PasteSpecial xlPasteValues 'modified
'wsCopy.Rows(i).Range("A2:K" & LastRowCopy).Copy
'wsDest.Rows(j).Range("A" & LastRowDest).PasteSpecial xlPasteValues
j = j + 1
End If
Next i
End Sub
Left 函数也可以在 VBA 中使用。 微软左功能