Ссылка Excel на текущую ячейку

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

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

  = CELL ("width", A2)  

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

  = CELL ("width", THIS_CELL)  

  1. На текущем листе выберите ячейка A1 (это важно!)

  2. Откройте Name Manager (Ctl + F3)

  3. Щелкните New...

  4. Введите «THIS_CELL» (или просто «ЭТО», что я предпочитаю) в Name:

  5. Введите следующую формулу в Refers в:

    =! A1

    ПРИМЕЧАНИЕ. Убедитесь, что ячейка A1 выбрана . Эта формула относится к ActiveCell.

  6. В Scope: выберите Workbook .

  7. Нажмите OK и закройте Диспетчер имен

  = CELL ("width", THIS_CELL)  

EDIT: Лучшее решение чем использование INDIRECT()

Стоит отметить, что данное мной решение должно быть предпочтительнее любого решения, использующего INDIRECT () по двум причинам:

  1. Она энергонезависима, а INDIRECT () — непостоянная функция Excel, и в результате значительно замедляет расчет книги при ее частом использовании.
  2. Это намного проще и не требует преобразования адреса (в форме ROW () COLUMN () ) к ссылке на диапазон до адреса и снова к ссылке на диапазон.

EDIT: Также см. этот вопрос для получения дополнительной информации о workbook-sco ped, именованные диапазоны, зависящие от листа.

РЕДАКТИРОВАТЬ: Также см. ответ @ imix ниже для варианта этой идеи (с использованием ссылок на стиль RC). В этом случае вы можете использовать =! RC для формулы именованного диапазона THIS_CELL или просто использовать RC напрямую.


Слишком поздно:

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

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

  = CELL ("width", RC)  

RC всегда ссылается текущая строка, текущий столбец, то есть «эта ячейка».

Решение Рика Тичи — это в основном настройка, которая делает то же самое в справочном стиле A1 (см. также Комментарий GSerg к ответу Джои и обратите внимание на его комментарий к ответу Патрика Макдональда).

Ура
🙂


Несколько лет слишком поздно:

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

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

  = CELL ("width", RC)  

RC всегда ссылается текущая строка, текущий столбец, то есть «эта ячейка».

Решение Рика Тичи — это в основном настройка, которая делает то же самое в справочном стиле A1 (см. также Комментарий GSerg к ответу Джои и обратите внимание на его комментарий к ответу Патрика Макдональда).

Ура
🙂


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

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


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

  = ЯЧЕЙКА ("ширина", КОСВЕННЫЙ (АДРЕС (СТРОКА (), КОЛОНКА ())))  

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

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


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

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


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


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


  = АДРЕС (СТРОКА (), КОЛОНКА ()) = АДРЕС (СТРОКА (  ), COLUMN (), 1) = ADDRESS (ROW (), COLUMN (), 2) = ADDRESS (ROW (), COLUMN (), 3) = ADDRESS (ROW (), COLUMN (), 4)  


  = АДРЕС (СТРОКА (), COLUMN ()) = ADDRESS (ROW (), COLUMN (), 1  ) = АДРЕС (СТРОКА (), COLUMN (), 2) = ADDRESS (ROW (), COLUMN (), 3) = ADDRESS (ROW (), COLUMN (), 4)  

Без INDIRECT (): = CELL ("ширина", OFFSET ($ A $ 1, ROW () - 1, COLUMN () - 1))


Без INDIRECT (): = CELL ("width" , СМЕЩЕНИЕ ($ A $ 1, ROW () - 1, COLUMN () - 1))


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

  Dim MyString as StringMyString = Application.ThisCell.AddressRange (MyString) .Select   

Надеюсь на это помогает.


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

   Dim MyString как StringMyString = Application.ThisCell.AddressRange (MyString) .Select  

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


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

Например, при наличии двух столбцов [Изменить] и [Баланс] , поместив это в столбце [Баланс] :

  = OFFSET ([@], -1, 0) + [Изменить]  

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


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

Например, при наличии двух столбцов [Изменить] и [Баланс] , поместив это в столбце [Баланс] :

  = OFFSET ([@], -1, 0) + [Изменить]  

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


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

Столбец A имеет значение True или False, столбец B содержит денежное значение, столбец C содержит следующую формулу: = B1

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

= AND (A1 = True, C1> 0)

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


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

Столбец A имеет значение Истина или Ложь, Столбец B содержит денежное значение, Столбец C содержит следующую формулу: = B1

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

= AND (A1 = True, C1> 0)

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


Полный балл за верхний ответ с помощью @ rick-teachey, но вы можете расширить этот подход для работы с условным форматированием. Чтобы этот ответ был полным, я продублирую ответ Рика в сводной форме, а затем расширю его:

  1. Выберите ячейку A1 на любом листе.
  2. Создайте именованный диапазон с именем THIS и установите для Refers to: значение =! A1 .

Попытка использовать ЭТО в формулах условного форматирования приведет к ошибке:

  Вы не можете использовать ссылки на другие книги для критериев условного форматирования  

Если вы хотите, чтобы ЭТО работал в формулах условного форматирования:

  1. Создайте еще один именованный диапазон с именем THIS_CF и установите для Refers to: значение = THIS .

Теперь вы можете использовать THIS_CF для ссылки на текущую ячейку в формулах условного форматирования.

Вы также можете использовать этот подход для создания других относительных именованных диапазонов, таких как THIS_COLUMN , THIS_ROW , ROW_ABOVE , COLUMN_LEFT и т. д.


Полная благодарность за верхний ответ @ rick-teachey, но вы можете расширить этот подход для работы с условным форматированием. Чтобы этот ответ был полным, я продублирую ответ Рика в сводной форме, а затем расширю его:

  1. Выберите ячейку A1 на любом листе.
  2. Создайте именованный диапазон с именем THIS и установите для Refers to: значение =! A1 код>.

Попытка использовать ЭТО в формулах условного форматирования приведет к ошибке:

   Вы не можете использовать ссылки на другие книги для критериев условного форматирования  

Если вы хотите, чтобы ЭТО работало в формулах условного форматирования:

  1. Создайте другой именованный диапазон с именем THIS_CF и установите для Refers to: значение = THIS .

Теперь вы можете использовать THIS_CF для ссылки на текущую ячейку в формулах условного форматирования.

Вы также можно использовать этот подход для создания других относительных именованных диапазонов, таких как THIS_COLUMN , THIS_ROW , ROW_ABOVE , COLUMN_LEFT и т. д.


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

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


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

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

Оцените статью
techsly.ru
Добавить комментарий