#excel #vba #excel-r1c1-notation
#excel #vba #excel-r1c1-нотация
Вопрос:
У меня есть макрос Excel, который создает новый лист Excel и заполняет его переменным количеством строк. У меня есть подсчет количества строк, хранящихся в переменной. Я использую формулу R1C1 для умножения двух ячеек вместе на основе моего количества строк. В макросе формула выглядит так, как будто она правильная (если я добавлю точку останова и прослежу за ней), но когда макрос завершается, формула в ячейке неверна.
VB-код для генерации формулы:
MainSheet.Cells(RowCount 6, 6).FormulaR1C1 = "=R[" amp; RowCount 3 amp; "]C" amp; "*" amp; "R[" amp; RowCount 4 amp; "]C"
Просмотр формулы с точкой останова показывает следующее: «= R [430] C * R [431] C»
Фактические данные ячейки после завершения макроса: = F863* F864. Мне нужно, чтобы это было = F430 * F431
Комментарии:
1. Ответ Скотта Крейнерса дает вам решение. Помимо этого: всегда немного сложно иметь дело с формулами ячеек в VBA. Чтобы получить представление о том, что именно нужно вставить в свой код, сначала сделайте наоборот: напишите формулу в ячейке вручную, оставайтесь в этой ячейке, перейдите в VBA-Editor, откройте immediateWindow (Ctrl G) и введите
? activecell.Formula, activecell.FormulaR1C1
Ответ №1:
С помощью []
вы сообщаете vba, что вам нужно относительное позиционирование. Это означает, что это добавит (или вычтет) число в []
к текущей строке и / или столбцу, в которые помещается формула.
Удалите RowCount:
MainSheet.Cells(RowCount 6, 6).FormulaR1C1 = "=R[3]C*R[4]C"