11 ответов:
создайте именованную формулу с именем THIS_CELL
- в текущем листе выберите ячейку A1 (это важно!)
- открыть
Name Manager(Ctl+F3)- клик
New...- введите " THIS_CELL "(или просто "это", что является моим предпочтением) в
Name:введите следующую формулу в
Refers to:
=!A1Примечание: убедитесь, что ячейка A1 выбрана. Эта формула является относительно активной ячейки.
под
Scope:выберитеWorkbook.- клик
OKзакрытьName Managerиспользуйте формулу на листе точно так, как вы хотели
=CELL("width",THIS_CELL)EDIT: лучшее решение, чем использование
INDIRECT()стоит отметить, что решение, которое я дал, должно быть предпочтительнее любого решения с использованием @и imix это ниже для вариации этой идеи (с использованием ссылок на стиль RC). В этом случае вы можете использовать
=!RCнаTHIS_CELLименованная формула диапазона, или просто использоватьRCнапрямую.
несколько лет слишком поздно:
просто для полноты картины хочу дать еще один ответ:
во-первых, перейти к Excel-Options ->Формулы и включения ссылки R1C1. Тогда используйте
=CELL("width", RC)
RCвсегда ссылается на текущую строку, текущий столбец, т. е."эта ячейка".решение Рика Тичи это в основном настройка, чтобы сделать то же самое возможно в A1 эталонный стиль (см. также GSerg это!--18--> к ответу и записке Джоуи комментарии на ответ Патрика Макдональда).
Ура
: -)
=ADDRESS(ROW(),COLUMN(),4)даст нам относительный адрес текущей ячейки.=INDIRECT(ADDRESS(ROW(),COLUMN()-1,4))даст нам содержимое ячейки слева от текущей ячейки=INDIRECT(ADDRESS(ROW()-1,COLUMN(),4))даст нам содержимое ячейки над текущей ячейкой (отлично подходит для расчета текущих итогов)используя CELL () функция возвращает информацию о последней измененной ячейке. Итак, если мы введем новую строку или столбец CELL () ссылка будет затронута и не будет никакой текущей ячейки длиннее.
=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], поставив в
Я нашел лучший способ справиться с этим (для меня) использовать следующее:
Dim MyString as String MyString = Application.ThisCell.Address Range(MyString).Selectнадеюсь, что это помогает.
есть лучший способ, который является более безопасным и не замедлит ваше приложение. Как Excel настроен, ячейка может иметь либо значение, либо формулу; формула не может ссылаться на свою собственную ячейку. Вы в конечном итоге с бесконечным циклом, так как новое значение приведет к другому вычислению... . Используйте вспомогательный столбец для вычисления значения на основе того, что вы помещаете в другую ячейку. Например:
столбец A является истинным или ложным, столбец B содержит денежное значение, столбец C содержит следующее формула: =B1
теперь, чтобы вычислить, что столбец B будет выделен желтым цветом в условном формате, только если столбец A истинен, а столбец B больше нуля...
=и(A1=True, C1>0)
затем вы можете скрыть столбец C
EDIT: следующее неверно, потому что ячейка ("ширина") возвращает ширину последние изменения клеток.
Cell("width")возвращает ширину текущей ячейки, так что вам не нужна ссылка на текущую ячейку. Если вам это нужно, хотя,cell("address")возвращает адрес текущей ячейки, так что если вам нужна ссылка на текущую ячейку, используйтеindirect(cell("address")). Смотрите документацию:http://www.techonthenet.com/excel/formulas/cell.php
Comments