Использование ссылок на формулы R1C1 в макросе (Microsoft Excel)
Джерри считает, что проще всего составлять формулы, использующие ссылки на ячейки R1C1. Она знает, как это сделать при добавлении формул на лист вручную, но задается вопросом, как она может использовать ссылки R1C1 в формулах, которые она объединяет и вставляет в ячейки с помощью макроса. Она задается вопросом, есть ли что-нибудь, чего ей следует остерегаться при этом.
Когда вы обычно вставляете формулу в ячейку, вы должны использовать этот тип синтаксиса в своем макросе:
Cells(3,1).Formula = "=A1 + A2" Range("A3").Formula = "=A1 + A2"
Любой из них будет работать нормально; они оба вставляют простую формулу в ячейку A3. Однако, если вы хотите использовать ссылки R1C1 в формуле, которую вы помещаете в ячейку A3, вам нужно только изменить свойство Formula на свойство FormulaR1C1:
Cells(3,1).FormulaR1C1 = "=R1C1 + R2C1" Range("A3").FormulaR1C1 = "=R1C1 + R2C1"
Интересно отметить, что если вы поместите приведенные выше формулы R1C1 в ячейку и на листе не будет включено отображение R1C1, тогда Excel преобразует формулу, чтобы отразить активное отображение. Другими словами, он автоматически изменяет «= R1C1 + R2C1» на «= $ A $ 1 + $ A $ 2». Верно и обратное — поместите формулу «= A1 + A2» в ячейку, и она отобразится как «= R [-2] C + R [-1] C», если у вас включен дисплей R1C1.
Следует также отметить, что, поскольку и Formula, и FormulaR1C1 являются свойствами, вы можете прочитать их и увидеть формулу в ячейке в нужном формате. Например, предположим, что ячейка A3 содержит формулу «= A1 + A2». Если затем запустить следующий макрос, вы увидите формулу, отображаемую в желаемых форматах:
Sub TestFormula() Dim sMsg As String sMsg = "Regular format: " & Cells(3,1).Formula & vbCrLf sMsg = sMsg & "R1C1 format: " & Range("A3").FormulaR1C1 MsgBox sMsg End Sub
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (5294) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.