Функция сотового «адрес» для всего диапазона задания

451
mwolfe02

Функция OFFSET($A$1:$Z$25,2,3,4,5)относится к диапазону $D$3:$H$6текущей рабочей таблицы.

Если я передаю «адрес» в качестве первого параметра CELLфункции и вышеупомянутую OFFSETфункцию в качестве второго параметра, я получаю только адрес первой ячейки в диапазоне. Другими словами,

=CELL("address", OFFSET($A$1:$Z$25,2,3,4,5)) 

производит значение $D$3.

Есть ли способ написать функцию, которая возвращает полную ссылку для диапазона ячеек? Например, что-то вроде:

=RANGE("address", OFFSET($A$1:$Z$25,2,3,4,5)) 

что даст стоимость $D$3:$H$6?

РЕДАКТИРОВАТЬ : Это очень просто сделать с небольшим VBA. Я надеялся избежать этого, чтобы меня не заставляли сохранять как файл .xlsm с поддержкой макросов. Вот функция VBA, которую я пытаюсь реализовать с помощью только функций листа:

Function ShowAddress(CellRange As Range) As String ShowAddress = CellRange.Address End Function 

Примечание. Моя мотивация для этого - помочь с отладкой создания сложных динамических именованных диапазонов. Я знаю, что могу скопировать и вставить формулу в поле Goto, но это добавляет немало работы в цикл разработки.

0

1 ответ на вопрос

0
teylyn

Cell () возвращает только первую ячейку в ссылке на несколько ячеек. Смотрите статью поддержки .

Если вы хотите создать ссылку на несколько ячеек, вы можете использовать Index () для первого диапазона и другой индекс для последней ячейки в диапазоне. Объедините две индексные функции с оператором: и результатом будет диапазон. Обратите внимание, что такую ​​формулу можно использовать в аргументе, который ожидает диапазон, например, Sum (), или в именованной формуле в менеджере имен, но не в отдельной ячейке таблицы, потому что она возвращает диапазон.

=index(sheet1!$A$1:$Z$25,3,4):Index(Sheet1!$A$1:$Z$25,6,8) 

enter image description here

Я понимаю, как работает функция CELL (). Я пытаюсь отладить сложные функции динамического диапазона, и я использовал функцию CELL () в качестве примера типа функции, которую я искал. Я надеялся, что будет решение без кода, но мне, возможно, придется прибегнуть к VBA. Спасибо, в любом случае. mwolfe02 6 лет назад 0
Я показал вам, как это сделать с помощью функции Index. Это не требует VBA. Если у вас есть все параметры для функции смещения, у вас также есть все параметры для двух функций индекса. teylyn 6 лет назад 0

Похожие вопросы