Вставка формулы со ссылками в стиле A1 и R1C1 в ячейку (диапазон) из кода VBA Excel. Свойства Range.FormulaLocal и Range.FormulaR1C1Local.
Свойство Range.FormulaLocal
В качестве примера будем использовать диапазон A1:E10, заполненный числами, которые необходимо сложить построчно и результат отобразить в столбце F:
Примеры вставки формул суммирования в ячейку F1:
1 2 |
Range("F1").FormulaLocal = "=СУММ(A1:E1)" Range("F1").FormulaLocal = "=СУММ(A1;B1;C1;D1;E1)" |
Пример вставки формул суммирования со ссылками в стиле A1 в диапазон F1:F10:
1 2 3 4 5 6 |
Sub Primer1() Dim i As Byte For i = 1 To 10 Range("F" & i).FormulaLocal = "=СУММ(A" & i & ":E" & i & ")" Next End Sub |
В этой статье я не рассматриваю свойство Range.Formula, но если вы решите его применить для вставки формулы в ячейку, используйте англоязычные функции, а в качестве разделителей аргументов — запятые (,) вместо точек с запятой (;):
1 |
Range("F1").Formula = "=SUM(A1,B1,C1,D1,E1)" |
После вставки формула автоматически преобразуется в локальную (на языке пользователя).
Свойство Range.FormulaR1C1Local
Формулы со ссылками в стиле R1C1 можно вставлять в ячейки рабочей книги Excel, в которой по умолчанию установлены ссылки в стиле A1. Вставленные ссылки в стиле R1C1 будут автоматически преобразованы в ссылки в стиле A1.
Примеры вставки формул суммирования со ссылками в стиле R1C1 в ячейку F1 (для той же таблицы):
1 2 3 4 5 6 7 8 9 10 11 |
'Абсолютные ссылки в стиле R1C1: Range("F1").FormulaR1C1Local = "=СУММ(R1C1:R1C5)" Range("F1").FormulaR1C1Local = "=СУММ(R1C1;R1C2;R1C3;R1C4;R1C5)" 'Ссылки в стиле R1C1, абсолютные по столбцам и относительные по строкам: Range("F1").FormulaR1C1Local = "=СУММ(RC1:RC5)" Range("F1").FormulaR1C1Local = "=СУММ(RC1;RC2;RC3;RC4;RC5)" 'Относительные ссылки в стиле R1C1: Range("F1").FormulaR1C1Local = "=СУММ(RC[-5]:RC[-1])" Range("F2").FormulaR1C1Local = "=СУММ(RC[-5];RC[-4];RC[-3];RC[-2];RC[-1])" |
Пример вставки формул суммирования со ссылками в стиле R1C1 в диапазон F1:F10:
1 2 3 4 5 |
'Ссылки в стиле R1C1, абсолютные по столбцам и относительные по строкам: Range("F1:F10").FormulaR1C1Local = "=СУММ(RC1:RC5)" 'Относительные ссылки в стиле R1C1: Range("F1:F10").FormulaR1C1Local = "=СУММ(RC[-5]:RC[-1])" |
Так как формулы с относительными ссылками и относительными по строкам ссылками в стиле R1C1 для всех ячеек столбца F одинаковы, их можно вставить сразу, без использования цикла, во весь диапазон.