VBA粘贴值并在循环期间跳过工作表

时间:2016-10-20 21:04:09

标签: excel excel-vba excel-2010 vba

我几乎拥有我想要的东西,但似乎无法一路走到那里。我正试图从数百个工作表中获取数据。我想复制/粘贴从A5开始到AG的每张纸的值(行是变化的)。我之前遇到的一个问题是A列并不总是有值,即使该行的其余部分也有。 A列对我的数据收集并不重要,因此我在B5开始复制/粘贴。

这复制了我想要复制的所有内容,但每张表上的几行都是公式,我需要粘贴的值。这是我真正迷失的地方。

最后,我的“总计”表格中有两张“高级”和“透视”表格。

以下是我一直在使用的内容:

    Sub CombineData()
    Dim Sht As Worksheet
    For Each Sht In ActiveWorkbook.Worksheets
    If Sht.Name <> "Total" And Sht.Range("B5").Value <> "" Then
    Sht.Activate
    LastRow = Range("B65536").End(xlUp).Row
    Range("B5", Cells(LastRow, "AG")).Copy
    Sheets("Total").Select
    Range("B65536").End(xlUp).Offset(1, 0).Select
    ActiveSheet.Paste
    Else
    End If
    Next Sht


    End Sub

任何帮助都会很棒。谢谢!

1 个答案:

答案 0 :(得分:0)

这样的事情对你有用:

Sub CombineData()

    Dim wb As Workbook
    Dim ws As Worksheet
    Dim wsTot As Worksheet
    Dim aData As Variant

    Set wb = ActiveWorkbook
    Set wsTot = wb.Sheets("Total")

    For Each ws In ActiveWorkbook.Sheets
        If InStr(1, " " & wsTot.Name & " Advanced Pivot ", " " & ws.Name & " ", vbTextCompare) = 0 _
        And Len(Trim(ws.Range("B5").Value)) > 0 Then
            aData = ws.Range("B5:AG" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row).Value
            wsTot.Cells(wsTot.Rows.Count, "B").End(xlUp).Offset(1).Resize(UBound(aData, 1), UBound(aData, 2)).Value = aData
            Erase aData
        End If
    Next ws

End Sub