遍历Excel工作表

时间:2018-10-01 18:06:35

标签: excel vba loops

我正在处理两个工作簿。首先,我在“费用编号”右侧的单元格中搜索值。取该值,然后在第二个工作簿数据透视表中搜索匹配的行,将其复制并返回到第一个工作簿并粘贴数据。这一次很好。但是我无法循环查找“充电号码”的下一个实例并重复该过程。我在代码中存在的循环是不正确的,因为它找到了第一个值很好,但随后在每一行中搜索了相同的费用编号。

Sub FindChargeNo()

    Dim Loc As Range
    Dim ChgNum As String
    Dim SrchRng2 As String
    Dim pvt As PivotTable
    Dim wb As Workbook, ws As Worksheet

    Dim FstWB As Workbook
    Dim SecWB As Workbook
    Dim rng As Range

    Set FstWB = Workbooks("First.xlsm")
    Set SecWB = Workbooks("Second_test.xlsx")
    Set ws1 = FstWB.Worksheets("New Development")
    Set ws = SecWB.Worksheets("Aug 18 Report")
    Set pvt = ws.PivotTables(1)

    lastRow = FstWB.Worksheets("New Development").Range("J" & Rows.Count).End(xlUp).Row

    For i = 1 To lastRow
        Set Loc = ws1.Cells.Find(What:="Charge Number")
        If Not Loc Is Nothing Then
            ChgNum = Loc.Offset(0, 1).Value
            Debug.Print ChgNum
            Debug.Print SrchRng

            With pvt.PivotFields("Project WBS").PivotItems(ChgNum).LabelRange
                Set rng = ws.Range(.Resize(.Rows.Count, pvt.TableRange1.Columns.Count).Address)
                ws.Range(rng.Address).Copy
            End With

            SrchRng2 = Loc.Offset(0, 5).Address
            FstWB.Worksheets("New Development").Range(SrchRng2).PasteSpecial

        Set Loc = ws1.Cells.FindNext(Loc)
        Loop While Loc.Address <> firstAddress
        End If
    Next

End Sub

0 个答案:

没有答案