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

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 определить адрес, найденный по этой формуле. Это должно быть что-то вроде «данных»!$ AO 90 $. Я должен получить адрес, потому что я ищу гиперссылку в этом адресе.

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

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

1 ответ1

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .