Excel VBA 从多个工作表复制和粘贴(不包括某些工作表),具体取决于特定单元格中的值

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

请对我宽容点,我是新手。 我有许多工作表,并且我将电子表格中其他工作表的信息填充到这些工作表中。 我想总结一下已填充到一张纸中进行打印的工作表。 这个想法是找到任何值超过单元格 B10(值不是公式)的工作表,并将该工作表的全部内容复制到“输出”工作表中的最后一个空白单元格上 - 偏移 1(在其间留下一个空行)。 到目前为止,我使用的是“AHU Sheet 1”,AHU Sheet 2”(两者都在B11及以下填充了值)和“AHU Sheet 3”,其中只有B11中的公式,这是一个空信息的测试表。

我想排除其他工作表。

到目前为止,我的代码什么也没做。

请帮忙:)

Sub printAll()

Dim ws As Worksheet
        For Each ws In Worksheets
        If ws.Name <> "Task Lists" And ws.Name <> "AHU-FCU Asset List" And ws.Name <> "Direct Expansion Asset List" And ws.Name <> "Refrigeration Asset List" And ws.Name <> "General Fans Asset List" And ws.Name <> "Lookups" And ws.Range("B10").Value <> "" Then

            ws.Cells.Copy

        Sheets("Output").Range("A" & Rows.Count).End(xlUp).Offset (1)
            .PasteSpecial Paste:=xlPasteValues
            .PasteSpecial Paste:=xlPasteFormats
        End If
    Next ws
 

End Sub

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

看看这是否适合您:

Sub printAll()

    Dim ws As Worksheet, wso As Worksheet, lastRow_ws As Long, lastRow_wso As Long
    Set wso = Sheets("Output")
    
    For Each ws In Worksheets
        If ws.Name <> "Task Lists" And _
            ws.Name <> "AHU-FCU Asset List" And _
            ws.Name <> "Direct Expansion Asset List" And _
            ws.Name <> "Refrigeration Asset List" And _
            ws.Name <> "General Fans Asset List" And _
            ws.Name <> "Lookups" And _
            ws.Range("B11").value <> "" And _
            Not (ws.Range("B11").HasFormula) Then 'check if "B11" is a formula
            
            lastRow_ws = ws.Cells(Rows.Count, "B").End(xlUp).row 'get last row of data based on column B in each ws
            lastRow_wso = wso.Cells(Rows.Count, "B").End(xlUp).row 'get last row of data copied into the Output sheet based on column B
            ws.Rows("1:" & lastRow_ws).Copy _
                Destination:=wso.Range("A" & lastRow_wso + IIf(lastRow_wso > 1, 2, 0)) 'IIf(lastRow_wso > 1, 2, 0) adds a blank separator row
        End If
    Next
 
End Sub

此代码根据符合您的条件的每个工作表中的 B 列数据将第 1 行复制到最后一行。我不确定你的数据是什么样子,也不知道 B 列是否有真正的最后一行。

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