【发布时间】:2021-03-19 18:27:36
【问题描述】:
我有一个包含许多工作表的工作簿。我想合并工作表。
大多数工作表中的单元格 A13 不同,但对于某些工作表,它们是相同的。
我想循环浏览床单。如果单元格 A13 匹配,则将第 10 行和第 11 行复制到 A10 中的第一个匹配表中,并删除其他匹配表。
例如,
比较 Sheet1 和 Sheet2 -> 如果单元格 A13 不匹配,则比较下一张表,即比较 Sheet2 和 Sheet3 以检查它们是否匹配。
如果 Sheet2 和 Sheet3 中的单元格 A13 匹配,则将 Sheet3 中的第 10 行和第 11 行复制到第 10 行下方的 Sheet2 中并删除 Sheet3。
然后将 Sheet2 与 Sheet4 进行比较,依此类推。
Sub WorksheetLoop()
Dim WS_Count As Integer
Dim I As Integer
' Set WS_Count equal to the number of worksheets in the active workbook.
WS_Count = ActiveWorkbook.Worksheets.Count
' Begin the loop.
For I = 1 To WS_Count
If Worksheets(I).Range("A13").Value = Worksheets(I + 1).Range("A13") Then
Worksheets(I + 1).Range("A7:L9").Copy
Worksheets(I).Range("A10").PasteSpecial
Worksheets(I + 1).Delete
End If
Next I
End Sub
首先,当这完成时我得到一个错误(我怀疑是因为范围)。
其次,当“A13”仅匹配两张纸时,它可以工作。当有多个匹配的工作表时,它只处理第一个匹配的工作表。
另一个问题是,如果有多个匹配的工作表,我将如何保留复制到第一个工作表中的所有范围,以便它们彼此粘贴而不是被覆盖?
【问题讨论】:
-
看起来您需要循环每个工作表,然后再次循环以检查值是否在其中。所以检查 sheet1 vs 2,3,4,5 然后 2 vs, 1,3,4,5 等等
-
或者只是将工作表循环到数组或字典中,“工作表名称”“A13 的内容”然后循环遍历并执行您需要做的事情。