Вопрос или проблема
Я работаю с группой очень сложных формул сдвига. Мне нужно видеть, на какие ячейки они ссылаются (Excel визуально подчеркивает ячейку, от которой основан сдвиг). Сдвиги в значительной степени велики, поэтому я не могу вручную использовать мышь или стрелочные клавиши для навигации к ним. Я могу использовать функцию cell()
, чтобы найти ответ – вручную вставляя полную формулу offset()
во второй аргумент функции cell()
. Однако это обременительно, и я работаю с сотнями таких формул сдвига, и у меня нет времени вручную вставлять все их.
Вручную, если я введу cell("address", OFFSET(D50, 5, 5))
, это работает нормально.
Я могу получить формулу сдвига отдельно, используя formulatext(A1)
. Однако следующее не срабатывает: cell("address", formulatext(A1))
. Даже если я использую дополнительную ячейку для хранения результата formulatext()
, это тоже не работает.
Возможно ли это для функции cell()
?
Идея: сгенерировать параметры функции offset() с использованием ячеек B2, B3 и B4, затем сгенерировать номер строки и номера столбцов, повторно найти их, используя A1 в качестве ссылки.
В первую очередь, давайте введем “D50” (текст) в ячейку B2, 5 в ячейку B3, затем 5 в ячейку B4. В ячейке B1 будет =ROW(OFFSET(INDIRECT(B2,TRUE),B3, B4))
, а в C1 =COLUMN(OFFSET(INDIRECT(B2,TRUE),B3, B4))
.
Затем в формуле ячейки измените это на =CELL("address",OFFSET($A$1,$B$1-1,$C$1-1))
.
p/s: Вам нужно будет ввести D50, 5, 5 только один раз… обратите внимание, что формула cell() одинакова для всего листа.
Ответ или решение
Как получить адрес ссылки формулы OFFSET в другой ячейке Excel
При работе с сложными формулами OFFSET в Excel важно иметь способ наблюдения за ячейками, на которые ссылаются эти формулы. К сожалению, стандартные инструменты Excel не всегда позволяют быстро и эффективно выполнить эту задачу, особенно если у вас огромное количество формул. В этой статье мы рассмотрим, как использовать функцию CELL в сочетании с OFFSET для извлечения адреса ячейки, на которую ссылается формула OFFSET.
Проблема
Вы уже пробовали использовать функцию FORMULATEXT для получения текста формулы, но столкнулись с ограничением: нельзя использовать полученный текст непосредственно в функции CELL. Также использование функции CELL с OFFSET работает корректно, но требует ручного ввода, что является неэффективным при большом количестве формул.
Решение
Для того чтобы упростить вашу задачу, мы разработаем метод, который позволяет вам вводить параметры OFFSET в отдельных ячейках всего один раз. Затем мы сможем динамически обращаться к ним и получать нужный адрес.
Шаги:
-
Входные данные: В ячейках B2, B3 и B4 задайте необходимые значения:
- B2: Введите "D50" (это будет адрес начальной ячейки).
- B3: Введите смещение по строкам (например, 5).
- B4: Введите смещение по столбцам (например, 5).
-
Определение строк и столбцов:
В ячейке B1 введите следующую формулу для получения адреса новой ячейки по строке:=ROW(OFFSET(INDIRECT(B2, TRUE), B3, B4))
В ячейке C1 введите аналогичную формулу для получения адреса по столбцу:
=COLUMN(OFFSET(INDIRECT(B2, TRUE), B3, B4))
-
Получение адреса:
В ячейке, где вы хотите отобразить адрес ячейки, на которую ссылается OFFSET, введите следующую формулу:=CELL("address", OFFSET($A$1, $B$1-1, $C$1-1))
Важно отметить, что здесь используется $A$1 в качестве базового адреса, но вы можете адаптировать его под свои нужды.
Преимущества
- Универсальность: Вам нужно ввести адрес начальной ячейки и величины смещения только один раз.
- Автоматизация: Вы можете скопировать указанные формулы на другие диапазоны, что сэкономит время при работе с большими данными.
- Простота: Вы сохраняете все формулы структуированными и легко управляемыми.
Заключение
Используйте описанный метод для упрощения работы с формулами OFFSET. Позволяя пользователю вводить параметры в отдельных ячейках, вы значительно снизите необходимость в ручных операциях и повысите эффективность работы в Excel. Этот подход подходит для больших наборов данных и сложных расчетов, позволяя вам сосредоточиться на анализе, а не на рутинных задачах.