Динамическая гиперссылка на последний дубликат в списке

Автор eeigor, 15 февраля 2022, 17:05

0 Пользователи и 1 гость просматривают эту тему.

eeigor

Добрый день!
Может кто поможет решить проблему с переходом на последний дубликат в списке (повторяющееся значение в столбце)?
Файл приложил.
Формула с LOOKUP находит последний дубликат, но не работает в составе динамической ссылки.

Edit 1:
Пример обновлён (загрузите файл повторно).

Edit 2: Все формулы сами по себе работают. Проблема с формулой HYPERLINK (ГИПЕРССЫЛКА).
Гиперссылка с разными формулами то оживает, то нет. Понять, в чём дело, сложно.
Вот такая формула вроде ищет последний дубликат (источник):
Data2_ФИО: INDEX(Data2_ФИО;SUMPRODUCT(MAX(ROW(Data2_ФИО)*(Data2_ФИО=$D6))-5))

Почему -5? Смещение диапазона Data2 от 1-й строки вниз в файле-примере. Попробовал (как в источнике): -Row(Data2)+1 вместо -5, работать перестало.

А такая ссылка работает, если её свернуть до именованной формулы Data2_ФИО:
=HYPERLINK("#"&CELL("ADDRESS";Data2_ФИО);"»")

Если формулу выше протянуть вниз, то работать перестаёт всё. Если скопировать и вставить, то аналогично. Не отображается "рука", если навести мышь, и не работает переход. Если сделать отмену и вернуть назад, вдруг начитает работать (гиперссылка оживает).

Формула с SUMPRODUCT оказалась самой компактной и не "массивной". Впрочем, именно с этой целью SUMPRODUCT и используется (умеет работать с массивами).
В общем, если кому интересно, поэкспериментируйте.
А задача вполне, кмк, достойна рассмотрения: как перейти на последний дубликат (быстро и очень быстро  :)). Потому как нет в LO Calc функции XLOOKUP* как в MS Excel, а писать макрос - снижение быстродействия.

_____
* search_mode: Specify the search mode to use: -1 - Perform a reverse search starting at the last item.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

eeigor

#1
Гиперссылка работает. Опытным путём установлено: если формула расчёта позиции строки "зашита" в именованную формулу.
Вот так:
=IFERROR(HYPERLINK("#"&CELL("ADDRESS";Data2_ЭтаФИО);"»");"")

Но не так, слишком "явно" :) (хотя речь идёт об одном и том же, просто формула раскрыта):
=IFERROR(HYPERLINK("#"&CELL("ADDRESS";INDEX(Data2_ФИО;SUMPRODUCT(MAX(ROW(Data2_ФИО)*(Data2_ФИО=$D7)))-ROW(Data2)+1));"»");"")

Где Data2_ЭтаФИО и есть именованная формула из строки выше, определённая в диалоге "Manage Names":
Data2_ЭтаФИО: INDEX(Data2_ФИО;SUMPRODUCT(MAX(ROW(Data2_ФИО)*(Data2_ФИО=$D7)))-ROW(Data2)+1)

Цитата: eeigor от 15 февраля 2022, 17:05-Row(Data2)+1 вместо -5, работать перестало
С этим, вроде, разобрался

Если других вариантов нет, то это - решение.
Странность работы функции HYPERLINK осталась не разъяснённой...
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community