2015-12-22 3 views
1

Диапазон соответствует указанному листу. lastRow является правильным. Почему это не работает?Заменить метод для диапазона

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

работает для меня, используя статический/буквального диапазон. – Marc

+0

Ну, мне нужен переменный диапазон XD Итак, мой синтаксис 'range' неверен ... – findwindow

+0

Что вы подразумеваете под« не работает »? – Rory

ответ

2

Поскольку вы пытаетесь изменить фактические формулы с заменой заявлением, это не будет работать, так как результат будет формулой слишком мало аргументов, с SUBTOTAL формулы.

Вы можете проверить это, попробовав его вручную. Вы также можете проверить это, заменив SUM на AVERAGE. В этом случае ваш код будет работать безупречно, так как синтаксис аргумента формулы идентичен.

Если вы действительно хотите повернуть SUM в SUBTOTAL, вам нужно будет отрегулировать разницу в синтаксисе в своем заявлении Replace или найти другой способ его решения.

+1

О да, две разные формулы. DUH XD – findwindow

+0

Хммм меняется на 'what: =" SUM (", replacement: =" Итого (9, "' все еще не удается. Мне кажется, мне нужно снять флажок 'match whole cell contents ', но HOW Edit: lol stupid. снял этот аргумент. Работает сейчас yaaaay <3 – findwindow

2

Рассмотрим что-то вроде:

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 
+0

Ага, я думаю, вы могли бы также использовать функцию замены вместо метода. – findwindow

+1

@findwindow да, но мой подход требует цикла, который неприятен. –

Смежные вопросы