请对我宽容点,我是新手。 我有许多工作表,并且我将电子表格中其他工作表的信息填充到这些工作表中。 我想总结一下已填充到一张纸中进行打印的工作表。 这个想法是找到任何值超过单元格 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
看看这是否适合您:
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 列是否有真正的最后一行。