Как сделать абсолютную ссылку с использованием формата 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 в окне ячейки при редактировании формулы переключит относительный или абсолютный