replace范围的方法

该范围符合正确的表格。 lastRow是正确的。 为什么这不工作?

 .Range("H3:I" & lastRow - 1).Replace what:="SUM", replacement:="Subtotal", _ lookat:=xlPart, MatchCase:=True 

由于您试图用您的replace语句更改实际公式,因此结果将会是一个参数太less的公式,并带有SUBTOTAL公式。

您可以通过手动尝试来testing。 你也可以用AVERAGE代替SUM来testing。 在这种情况下,由于公式参数语法是相同的,所以您的代码将完美地工作。

如果你真的想把一个SUM变成一个SUBTOTAL ,你必须调整你的Replace语句中的语法差异,或者find另一种方法去处理它。

考虑这样的事情:

 Sub qwertyx() With ActiveSheet lastRow = 10 For Each r In .Range("H3:I" & (lastRow - 1)) r.Formula = Replace(r.Formula, "SUM(", "SUBTOTAL(9,") Next r End With End Sub