我有一個鏈接到外部源的模板。Excel VBA - 粘貼到可見單元格
我的前任創建了它,並且爲了讓眼睛「輕鬆」,他/她通過跳過一行來創建它。即行1,行3,行5,行9,行13等等。
我創建了一個打開工作簿並複製我想要的工作表的vba。
如果我使用下面的代碼,它運行速度非常慢,並且出於某種原因,它不止一次地循環。
for each cell in usedrange
if cell.hasformula = true and instr(cell.formula, "SUMIF") > 0 then
cell.formulaR1C1 = "='\\tel\folder1\folder2\[xlsheet.xlsx]SheetName'!RC
end if
next cell
因此,我所做的是實際分配一次,複製它,然後粘貼到相應的單元格(如下所示)。
Workbooks(desWB).Sheets(maxSheet + 1).Range("J5").FormulaR1C1 = fullPath
Workbooks(desWB).Sheets(maxSheet + 1).Range("J5").Copy
Workbooks(desWB).Sheets(maxSheet + 1).Range("J6:J12,E48:J55,E57:J58,E61:J79,E84:J93,E96:J96,E99:J103").PasteSpecial Paste:=xlPasteFormulas
後一種方法的工作原理和它的絕對比第一次更快。但是,現在我面臨的情況是,由於模板的設置,某些行具有公式,有些行不具有公式,並且會有數千行。行的跳躍也有時不是2的增量,也可能是3,5等
所以想知道如果有一種方式,是更有效和更高效:
- 看的使用範圍
- 如果範圍有公式和公式有「SUMIF」
- 改變配方到別的
- 否則跳過檢查下一個單元格
如果一行最左邊的單元格是空白的,那麼這是否意味着應該跳過整個行? –
這是正確的...當這一行是空白時,整行都是空白的。 –