Как получить ссылку на текущую ячейку?
Например, если я хочу отобразить ширину столбца A, я мог бы использовать следующее:
=CELL("width", A2)
Однако, я хочу, чтобы формула была примерно такой:
=CELL("width", THIS_CELL)
Как получить ссылку на текущую ячейку?
Например, если я хочу отобразить ширину столбца A, я мог бы использовать следующее:
=CELL("width", A2)
Однако, я хочу, чтобы формула была примерно такой:
=CELL("width", THIS_CELL)
Name Manager
(Ctl + F3)New...
Name:
Введите следующую формулу в Refers to:
=!A1
ПРИМЕЧАНИЕ. Убедитесь, что выбрана ячейка A1. Эта формула относится к ActiveCell.
В Scope:
выберите Workbook
.
OK
и закройте Name Manager
=CELL("width",THIS_CELL)
EDIT: Лучшее решение, чем использование INDIRECT()
Стоит отметить, что решение, которое я дал, должно быть предпочтительнее любого решения с использованием функции INDIRECT()
по двум причинам:
INDIRECT()
- изменчивой функцией Excel, и, как результат, значительно замедлит расчет рабочей книги, когда он используется много.ROW()
COLUMN()
) в ссылку диапазона на адрес и обратно на ссылку диапазона.РЕДАКТИРОВАТЬ: Также см. этот вопрос для получения дополнительной информации о диапазонах именованных диапазонов, зависящих от книги.
РЕДАКТИРОВАТЬ: Также см. @imix answer ниже для вариации этой идеи (используя ссылки в стиле RC). В этом случае вы можете использовать =!RC
для формулы с названием диапазона t216 > или просто использовать RC
напрямую.
Вы можете использовать
=CELL("width", INDIRECT(ADDRESS(ROW(), COLUMN())))
Несколько лет спустя:
Только для полноты я хочу дать еще один ответ:
Сначала перейдите в Excel-Options → Формулы и включите ссылки R1C1. Затем используйте
=CELL("width", RC)
RC
всегда ссылается на текущую колонку, текущую колонку, то есть "эту ячейку".
Решение Rick Teachey - это в основном настройка, чтобы сделать то же самое в стиле ссылки A1 (см. также комментарий GSerg ответить Джои и отметить его комментарий к ответу Патрика Макдональда).
Приветствия
: -)
=ADDRESS(ROW(),COLUMN(),4)
даст нам относительный адрес текущей ячейки.
=INDIRECT(ADDRESS(ROW(),COLUMN()-1,4))
даст нам содержимое ячейки слева от текущей ячейки
=INDIRECT(ADDRESS(ROW()-1,COLUMN(),4))
даст нам содержимое ячейки над текущей ячейкой (отлично подходит для вычисления итоговых итогов)
Использование функции CELL() возвращает информацию о последней ячейке, которая была изменена. Итак, если мы вводим новую строку или столбец, ссылка CELL() будет затронута и больше не будет текущей ячейкой.
A2
уже является относительной ссылкой и будет меняться при перемещении ячейки или копировании формулы.
Без INDIRECT(): =CELL("width", OFFSET($A$1,ROW()-1,COLUMN()-1) )
=ADDRESS(ROW(),COLUMN())
=ADDRESS(ROW(),COLUMN(),1)
=ADDRESS(ROW(),COLUMN(),2)
=ADDRESS(ROW(),COLUMN(),3)
=ADDRESS(ROW(),COLUMN(),4)
Внутри таблиц вы можете использовать [@]
, который (к сожалению) Excel автоматически расширяется до Table1[@]
, но он работает. (Я использую Excel 2010)
Например, при наличии двух столбцов [Change]
и [Balance]
, помещая это в столбец [Balance]
:
=OFFSET([@], -1, 0) + [Change]
Обратите внимание, что это зависит от порядка строк (так же, как и большинства других решений), поэтому он немного хрупкий.
Я нашел лучший способ справиться с этим (для меня) - использовать следующее:
Dim MyString as String
MyString = Application.ThisCell.Address
Range(MyString).Select
Надеюсь, что это поможет.
Существует лучший способ, который безопаснее и не замедлит ваше приложение. Как настроен Excel, ячейка может иметь либо значение, либо формулу; формула не может ссылаться на свою собственную ячейку. Вы закончите бесконечный цикл, так как новое значение вызовет другой расчет.... Используйте вспомогательный столбец для вычисления значения на основе того, что вы положили в другую ячейку. Например:
Столбец A является истинным или ложным, столбец B содержит денежное значение, столбец C содержит следующую формулу: = В1
Теперь, чтобы вычислить, что столбец B будет выделен желтым в условном формате, только если столбец A равен True, а столбец B больше нуля...
= И (А1 = True, С1 > 0)
Затем вы можете скрыть столбец C
EDIT: неверно следующее: Cell ( "width" ) возвращает ширину последней измененной ячейки.
Cell("width")
возвращает ширину текущей ячейки, поэтому вам не нужна ссылка на текущую ячейку. Если вам это нужно, cell("address")
возвращает адрес текущей ячейки, поэтому, если вам нужна ссылка на текущую ячейку, используйте indirect(cell("address"))
. См. Документацию: http://www.techonthenet.com/excel/formulas/cell.php