Мой ответ сфокусирован на создании ссылки на $A$4:A4
которая работает на всех листах, так как это часть ссылки, к которой Excel добавляет нежелательное имя листа. (Я полагаю, у вас нет проблем со ссылкой на таблицу.)
Вы можете решить эту проблему, используя функцию INDIRECT следующим образом:
- На любом листе выберите ячейку
A1
Создайте именованный диапазон со ссылкой на:
=INDIRECT("$A$4"):INDIRECT("R[3]C[0]",FALSE)
По вашему вопросу вторая ячейка в вашей ссылке на $A$4:A4
является относительной, и ссылка на это имя построена соответственно. Поэтому, если вы используете это имя в ячейке A1
оно вернет диапазон $A$4:A4
. Если вы ссылаетесь на имя из B1
имя будет правильно возвращать диапазон $A$4:B4
.
Как это устроено
Первая половина формулы проста. INDIRECT("$A$4")
всегда будет ссылаться на ячейку A4
на текущем листе.
Вторая половина немного сложнее. INDIRECT("R[3]C[0]",FALSE)
относится к «3 строкам внизу в одном столбце относительно текущей ячейки». Если вы находитесь в ячейке A1
это ячейка A4
. Аргумент FALSE указывает функции INDIRECT интерпретировать текст как ссылку в стиле R1C1 вместо ссылки по умолчанию в стиле A1.
Завершенная формула
Ваша окончательная ссылка на имя будет выглядеть примерно так:
=COUNTIF(INDIRECT("$A$4"):INDIRECT("R[3]C[0]",FALSE), Tbl_InventoryMain[Barcode])