Подтвердить что ты не робот

Справочник Excel к текущей ячейке

Как получить ссылку на текущую ячейку?

Например, если я хочу отобразить ширину столбца A, я мог бы использовать следующее:

=CELL("width", A2)

Однако, я хочу, чтобы формула была примерно такой:

=CELL("width", THIS_CELL)
4b9b3361

Ответ 1

Создайте именованную формулу под названием THIS_CELL

  • На текущем листе выберите ячейку A1 (это важно!)
  • Открыть Name Manager (Ctl + F3)
  • Нажмите New...
  • Введите "THIS_CELL" (или просто "THIS", что является моим предпочтением) в 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 напрямую.

Ответ 2

Вы можете использовать

=CELL("width", INDIRECT(ADDRESS(ROW(), COLUMN())))

Ответ 3

Несколько лет спустя:

Только для полноты я хочу дать еще один ответ:

Сначала перейдите в Excel-Options → Формулы и включите ссылки R1C1. Затем используйте

  =CELL("width", RC)

RC всегда ссылается на текущую колонку, текущую колонку, то есть "эту ячейку".

Решение Rick Teachey - это в основном настройка, чтобы сделать то же самое в стиле ссылки A1 (см. также комментарий GSerg ответить Джои и отметить его комментарий к ответу Патрика Макдональда).

Приветствия
: -)

Ответ 4

=ADDRESS(ROW(),COLUMN(),4) даст нам относительный адрес текущей ячейки. =INDIRECT(ADDRESS(ROW(),COLUMN()-1,4)) даст нам содержимое ячейки слева от текущей ячейки =INDIRECT(ADDRESS(ROW()-1,COLUMN(),4)) даст нам содержимое ячейки над текущей ячейкой (отлично подходит для вычисления итоговых итогов)

Использование функции CELL() возвращает информацию о последней ячейке, которая была изменена. Итак, если мы вводим новую строку или столбец, ссылка CELL() будет затронута и больше не будет текущей ячейкой.

Ответ 5

A2 уже является относительной ссылкой и будет меняться при перемещении ячейки или копировании формулы.

Ответ 6

Без INDIRECT(): =CELL("width", OFFSET($A$1,ROW()-1,COLUMN()-1) )

Ответ 7

=ADDRESS(ROW(),COLUMN())
=ADDRESS(ROW(),COLUMN(),1)
=ADDRESS(ROW(),COLUMN(),2)
=ADDRESS(ROW(),COLUMN(),3)
=ADDRESS(ROW(),COLUMN(),4)

Ответ 8

Внутри таблиц вы можете использовать [@], который (к сожалению) Excel автоматически расширяется до Table1[@], но он работает. (Я использую Excel 2010)

Например, при наличии двух столбцов [Change] и [Balance], помещая это в столбец [Balance]:

=OFFSET([@], -1, 0) + [Change]

Обратите внимание, что это зависит от порядка строк (так же, как и большинства других решений), поэтому он немного хрупкий.

Ответ 9

Я нашел лучший способ справиться с этим (для меня) - использовать следующее:

Dim MyString as String
MyString = Application.ThisCell.Address
Range(MyString).Select

Надеюсь, что это поможет.

Ответ 10

Существует лучший способ, который безопаснее и не замедлит ваше приложение. Как настроен Excel, ячейка может иметь либо значение, либо формулу; формула не может ссылаться на свою собственную ячейку. Вы закончите бесконечный цикл, так как новое значение вызовет другой расчет.... Используйте вспомогательный столбец для вычисления значения на основе того, что вы положили в другую ячейку. Например:

Столбец A является истинным или ложным, столбец B содержит денежное значение, столбец C содержит следующую формулу: = В1

Теперь, чтобы вычислить, что столбец B будет выделен желтым в условном формате, только если столбец A равен True, а столбец B больше нуля...

= И (А1 = True, С1 > 0)

Затем вы можете скрыть столбец C

Ответ 11

EDIT: неверно следующее: Cell ( "width" ) возвращает ширину последней измененной ячейки.

Cell("width") возвращает ширину текущей ячейки, поэтому вам не нужна ссылка на текущую ячейку. Если вам это нужно, cell("address") возвращает адрес текущей ячейки, поэтому, если вам нужна ссылка на текущую ячейку, используйте indirect(cell("address")). См. Документацию: http://www.techonthenet.com/excel/formulas/cell.php