【发布时间】:2014-01-30 17:43:37
【问题描述】:
我有几个要合并的 Excel 文件。每个文件有 17 张,分别命名为 00、01、02、03 等。 现在,我打开每个工作簿并尝试将数据复制到一个文件中,该文件也有 16 个工作表,在工作表 x 上我想从工作表 x 中获取所有其他工作簿的信息。
现在,我打开文件,每个文件都有以下代码:
For i = 0 To 16
Workbooks(nazwaPliku).Activate
zakladka = Right("0" & CStr(i), 2)
Sheets(zakladka).Activate
ileWierszy = Application.WorksheetFunction.Max(Sheets(zakladka).Range("B:B"))
wierszMin = Application.WorksheetFunction.Match("1", Sheets(zakladka).Range("B:B"), 0)
zakresDoKop = "A" & wierszMin + 1 & ":" & "I" & wierszMin + ileWierszy + 1 '1 wiecej dla bezpieczenstwa
Sheets(zakladka).Range(zakresDoKop).Resize(ileWierszy, 1).Value = rok & "_" & czesc
Sheets(zakladka).Range(zakresDoKop).Copy
ThisWorkbook.Sheets(zakladka).Activate
ThisWorkbook.Sheets(zakladka).Range("A" & wsk(i)).PasteSpecial
wsk(i) = wsk(i) + ileWierszy + 2
Next i
对于第一个文件,一切都很好(所有工作表的 wsk = 2),但是当我打开下一个工作簿时,发生了一些奇怪的事情。例如,当 i=2 时,代码从工作表 02 - 16 复制数据并将它们粘贴到此工作簿中。更重要的是,我通过删除工作簿中的第 16 表进行了测试,当 i 16 时,发生错误(因为它缺少一张表)。我想也许我不太了解这里的循环?
有什么想法吗?我知道如何以不同的方式编写它,但由于我花了最后 4 个小时试图弄清楚事情,我真的很想知道为什么会发生这种情况。
【问题讨论】:
-
您的所有数据是否都按升序排列,以便 Max 始终获得最后一行?
-
是的,最大行总是正确选择