В Excel-VBA требуется заменить символ внутри ячейки и распространить эту операцию на все ячейки в одном столбце. Я пытался
Dim i As Integer
Range("M2").Select
For i = 2 To Range("M99999").End(xlUp).Row
Selection.Offset(1, 0).Select
ActiveCell.Value = CDec(Replace(ActiveCell.Value, "+", ","))
Next i
Это сработало ... но слишком медленно.
Если в Excel мы напишем правильную формулу в следующей правой ячейке, а затем дважды щелкнем по ее правому нижнему углу, мы получим тот же результат, но действительно быстрее. Таким образом, я зарегистрировал макрос, делающий это. Вот и все
ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""+"","","")"
Range("N2").Select
Selection.AutoFill Destination:=Range("N2:N10174")
Range("N2:N100000").Select
Мне было интересно:
- Почему автозаполнение происходит быстрее? Я ожидал, что он выполнит аналогичную операцию
- , возможно ли использовать тот же лог c записанного макроса для динамического обновления столбца начиная с (т.е. без копирования вставка вычисляемого столбца в начальный)