Как получить адрес, возвращаемый по формуле в Excel

374
user823527

У меня есть лист, где показанные данные основаны на выбранных списках. Значения рассчитываются по формуле:

INDEX(INDIRECT($Q61),SUMPRODUCT((INDIRECT($O$5)=$B$1)*(INDIRECT($O$6)=$B$2)*(INDIRECT($O$3)=$B$3)*(INDIRECT($O$7)=B$4)*ROW(INDIRECT($O$8)))-5),"") 

Q61 - это диапазон в другом листе: «Данные»! $ AO $ 6: $ AO $ 104000 SUMPRODUCT соответствует четырем другим критериям, основанным на выборе в выпадающем списке.

Формула должна вычислить строку в диапазоне и вернуть значение. Есть ли способ в VBA определить адрес, найденный по этой формуле. Это должно быть что-то вроде «Data»! $ AO $ 90. Я должен получить адрес, потому что я ищу гиперссылку в этом адресе.

Формула INDEX правильно возвращает значение в «Данные»! $ AO $ 90. Я хочу вернуть гиперссылку.

Это изображение листа. Каждое значение рассчитывается по формуле INDEX, как показано выше. Несколько значений должны иметь гиперссылки. Я должен получить оригинальный адрес в «Данные»! лист, чтобы положить их обратно с VBA всякий раз, когда пользователь делает новый выбор.

enter image description here

0
Вы можете получить Excel, чтобы показать вам `row_num`, используемый` INDEX () `. Выберите ячейку с формулой и нажмите на слово INDEX на панели формул. Нажмите `row_num` в раскрывающемся списке и нажмите клавишу` F9`. В ответе на этот вопрос есть иллюстрации (https://superuser.com/questions/1315726/excel-getting-false-when-the-value-is-in-the-row-array/1315832#1315832) , Bandersnatch 6 лет назад 0
Вы также можете использовать `= CELL (" address ", your_formula). Bandersnatch 6 лет назад 1

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

0
p._phidot_

Из 'Data'!$AO$6:$AO$104000диапазона вы получаете значение в 'Data'!$AO$90. Так работают стандартные функции index ().

Поскольку вам просто нужен адрес, 'Data'!$AO$90вы можете получить его, разделив функцию index (), которую вы используете, чтобы получить его. Идея заключается в том, что, так как index(<range>,<RowNumber>,<ColNumber>), и для этого случая пусть села 85. Таким образом, "адрес" вам нужно

= "'Data'!$AO$"&(<RowNumber>+5) 

Попробуйте, надеюсь, это поможет. (:

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