Наиболее длинная подстрока
06.11.2023 19:55:03
|
|
|
|
06.11.2023 20:11:16
sokol92, Приветствую, ну формулу я подправил. Что-то +1 убрал не подумав
=MID(A2;MOD(MAX((COUNTIF(A2:A6;"*"&MID(A2;ROW(A1:INDEX(A:A;LEN(A2)));TRANSPOSE(ROW(A1:INDEX(A:A;LEN(A2)))))&"*")=ROWS(A2:A6))*(TRANSPOSE(ROW(A1:INDEX(A:A;LEN(A2))))<=LEN(A2)-ROW(A1:INDEX(A:A;LEN(A2)))+1)*(TRANSPOSE(ROW(A1:INDEX(A:A;LEN(A2))))+ROW(A1:INDEX(A:A;LEN(A2)))%%));1)/1%%+1/2;INT(MAX((COUNTIF(A2:A6;"*"&MID(A2;ROW(A1:INDEX(A:A;LEN(A2)));TRANSPOSE(ROW(A1:INDEX(A:A;LEN(A2)))))&"*")=ROWS(A2:A6))*(TRANSPOSE(ROW(A1:INDEX(A:A;LEN(A2))))<=LEN(A2)-ROW(A1:INDEX(A:A;LEN(A2)))+1)*(TRANSPOSE(ROW(A1:INDEX(A:A;LEN(A2))))+ROW(A1:INDEX(A:A;LEN(A2)))%%)))) а вот функция единая отработала. Спасибо за замечание.
По вопросам из тем форума, личку не читаю.
|
|
|
|
14.11.2023 12:44:08
Всем добрый день! Перешел на боевые условия, чую что что-то не то, неправильно функция работает. На первом тестовом примере правильно, на других не то. Посмотрите пожалуйста.
Суперформула тоже получается не всегда правильный ответ дает =ПСТР(B2;ОСТАТ(МАКС((СЧЁТЕСЛИ(B2:B5;"*"&ПСТР(B2;СТРОКА(B1:ИНДЕКС(B:B;ДЛСТР(B2)));ТРАНСП(СТРОКА(B1:ИНДЕКС(B:B;ДЛСТР(B2)))))&"*")=ЧСТРОК(B2:B5))*(ТРАНСП(СТРОКА(B1:ИНДЕКС(B:B;ДЛСТР(B2))))<=ДЛСТР(B2)-СТРОКА(B1:ИНДЕКС(B:B;ДЛСТР(B2)))+1)*(ТРАНСП(СТРОКА(B1:ИНДЕКС(B:B;ДЛСТР(B2))))+СТРОКА(B1:ИНДЕКС(B:B;ДЛСТР(B2)))%%));1)/1%%+1/2;ЦЕЛОЕ(МАКС((СЧЁТЕСЛИ(B2:B5;"*"&ПСТР(B2;СТРОКА(B1:ИНДЕКС(B:B;ДЛСТР(B2)));ТРАНСП(СТРОКА(B1:ИНДЕКС(B:B;ДЛСТР(B2)))))&"*")=ЧСТРОК(B2:B5))*(ТРАНСП(СТРОКА(B1:ИНДЕКС(B:B;ДЛСТР(B2))))<=ДЛСТР(B2)-СТРОКА(B1:ИНДЕКС(B:B;ДЛСТР(B2)))+1)*(ТРАНСП(СТРОКА(B1:ИНДЕКС(B:B;ДЛСТР(B2))))+СТРОКА(B1:ИНДЕКС(B:B;ДЛСТР(B2)))%%))))
Изменено: |
|
|
|
14.11.2023 13:17:02
Да, вроде все верно, беру свои слова обратно, суперформула работает А как же функция? Формула жесть какая не удобная.
|
|
|
|
14.11.2023 13:32:44
Вы, наверное. про VBA. Любую формулу можно "обернуть" в UDF, чтобы, например, не вводить одни и те же условия несколько раз, но, как правило, если уж делать на VBA, то БЕЗ функций листа. Как правило, так будет быстрее и короче. Если, конечно, не стоит задача, получить на листе именно формулу из штатных функций, чтобы работало без VBA на других компах. Но это уже совсем другая история…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|||
|
|
14.11.2023 17:33:44
Изменено:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|||
|
|
15.11.2023 11:07:11
Все верно
Отличие между понятием "формулой" и "функцией" уяснил, премного благодарен. |
|
|
|
15.11.2023 11:17:07
Изменено:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|||||||
|
|
15.11.2023 13:05:45
abcdefuqwerno abcdefiqwerpo fooqwerpo vesqwerker MainSubString возвращает правильно qwer, а вот Longest только e |
|||
|
|
15.11.2023 13:14:38
Андрей VG, приветствую! И спасибо за тест
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|
|
|
15.11.2023 15:57:20
Огромное спасибо
|
|
|
|
15.11.2023 16:19:28
dim284, пожалуйста. Спасибо и вам за интересную задачу. Такие сейчас очень редки, к сожалению …
Учтите, что при сборе строк используется словарь, чтобы потом не бегать в цикле по одинаковым строкам. Если строки у вас гарантированно уникальные, то можно будет его убрать. Но сильно быстрее не будет, т.к. он работает очень быстро. Но, если уникальных строк будет больше 100 тысяч, то он начнёт заметно тупить.
Изменено:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел)
|
|
|
|
15.11.2023 16:40:41
Низкий поклон! |
||||
|
|
|||