Как сделать абсолютную ссылку с использованием формата r1c1 в VBA для Excel?
Я пишу макрос для Excel с использованием VBA (формат r1c1), и я хочу ссылаться на ячейку, которая всегда находится в позиции E3. Есть ли синтаксис, который я могу использовать, который сделает абсолютную ссылку в формате r1c1? Или есть способ переключиться на A1 и обратно на r1c1?
Я везде искал, и я не могу найти ответ... спасибо заранее.
Ответы
Ответ 1
Если я вставляю =E3
в G5
и =$E$3
в G6
, а затем запустите окно VB и в ближайшем окне сделайте следующее:
? ActiveSheet.Range("G5").Formula
=E3
? ActiveSheet.Range("G5").FormulaR1C1
=R[-2]C[-2]
? ActiveSheet.Range("G6").Formula
=$E$3
? ActiveSheet.Range("G6").FormulaR1C1
=R3C5
Таким образом, R и C делают его относительно текущей ячейки. Вам нужно использовать квадратные скобки, когда число отрицательно, иначе Excel считает, что вы вычитаете число из недопустимой ссылки на ячейку.
EDIT. Следует отметить, что ссылка обрабатывается по-разному, когда абсолютная и относительная.
-
Для относительных ссылок, которые вы подсчитываете из ячейки, в которой находится формула. E3
находится R[-2]C[-2]
от G5
. то есть 2 строки вверх, 2 столбца влево.
-
Для абсолютных значений вы рассчитываете в верхнем левом углу. Итак, E3
- R3C5
. т.е. 3 строки вниз, 5 столбцов. (благодаря @GeorgeDooling для разъяснения)
Ответ 2
Иногда функция "Application.ConvertFormula" полезна для перехода между стилями ссылок. Например, добавив это в ближайшее окно:
debug.print application.ConvertFormula( "= PRODUCT (O7, P $7)", xla1, xlr1c1)
вернул это:
= ПРОДУКТ (RC [-5], R7c [-4])
Это тривиальный пример, но когда у вас есть форму монстра на руках...
Кроме того, переключение между стилями ссылок в VBA выполняется с помощью:
application.ReferenceStyle = xlA1
или
application.ReferenceStyle = xlR1C1
Ответ 3
Формат R1C1 может использоваться как для абсолютных, так и для относительных ссылок.
R1C1 без скобок является абсолютным, когда вы используете скобки, он относительный.
R3C5
всегда указывает на E3
независимо от того, где вы его используете.
Как вы уже знаете, R[3]C[5]
всегда указывает 3 вниз и 5 справа от вашего текущего местоположения.
Поскольку Джордж Дулинг уже сказал в одном из комментариев, причина R-3C-5
бессмысленна в том, что вы находитесь вне листа. Лист начинается с R1C1
, и цифры только поднимаются.
Что касается второго вопроса, вы можете использовать формат A1, заключая его в кавычки. R3C5
может быть записано как "E3"
внутри FormulaR1C1
без проблем.
Ответ 4
R3C5
Без скобок = относительный
Удар f4 в окне ячейки при редактировании формулы переключит относительный или абсолютный