VBA Excel:将新数据复制到前一个数据集的lastrow + 1

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

我目前正在开发一个 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 视频。

excel vba request excel-2010 vba6
1个回答
0
投票

请你试试这个:

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 中使用。 微软左功能

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