Поиск N-й самой ранней (самой старой) даты из списка, дата является частичной строкой

Я хочу получить N-ю самую старую дату из списка текстовых строк. Данные выглядят следующим образом:

Дата 100% (29.05.2024) 100% (08.11.2022) 100% (28.03.2022) 100% (08.11.2022) 100% (25.10.2022) 0% 25% (29.05.2024) 100% (25.08.2022) 100% (25.10.2022)

Результатом, если N = 1, должна быть самая старая дата или 03/28/2022. Если N = 3, результат должен быть 10/05/2022.

Мне известны функции SMALL() и MID(), но я не уверен, как можно объединить эти две, одновременно ища только те поля, в которых есть даты. Даты будут включены только в те, которые имеют значение >0%, но оценивать следует только те, которые имеют значение 100%.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
77
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Возможно, попробуйте:

=IFERROR(INDEX(SORT(--REGEXEXTRACT(A1:A9,"^100% \((\d\d/\d\d/\d{4})\)$")),1),"No Value")

Таким образом, вы будете извлекать даты только тогда, когда строка начинается с «100%» и соответствует остальной части правильного шаблона ввода. Здесь «1» — это ваше «Н». Просто измените его по желанию.

У меня работало, пока формат даты — ММ/ДД/ГГГГ.

DanCue 17.06.2024 19:54

У меня есть N или 1, связанный с ячейкой. Когда я удаляю значение, оно перечисляет все значения до конца. Я не думаю, что это будет проблемой, потому что я не ожидаю, что эта ячейка будет пустой, но я подумал, что подниму этот вопрос. Спасибо за ответ и за быстрый ответ.

DanCue 17.06.2024 19:57

При необходимости мы можем настроить этот формат @DanCue. Спасибо за ответ.

JvdV 17.06.2024 19:58

Позвольте мне задать вам тот же вопрос, который я задал в другом ответе... Допустим, данные распределены по строке, а не по столбцу? Я не уточнил это в вопросе, но просто подумал, что, возможно, мне придется пойти по этому пути. Будет ли это работать или как мне нужно будет изменить его, чтобы адаптироваться?

DanCue 17.06.2024 20:17
TOCOL, похоже, сработало.
DanCue 17.06.2024 20:25

@DanCue: В этом случае лучше используйте формулу, которая может обрабатывать оба варианта: =IFERROR(INDEX(LARGE(--REGEXEXTRACT(D1:L1,"^100% \((\d\d/\d\d/\d{4})\)$"),8)),"No Value"). Здесь D1:L1 — заполнитель для горизонтального массива. «8», очевидно, «Н».

JvdV 17.06.2024 20:31

Боюсь, один из них не сработал. С ТОКОЛом работало, как и ожидалось, на горизонтальной решетке.

DanCue 17.06.2024 21:30

У меня сработало, но, очевидно, используйте то, что подходит вам @DanCue. Рад, что ваша проблема решена.

JvdV 17.06.2024 21:34

Ага. Должно быть, я делаю что-то не так. Ни вертикаль, ни горизонталь не работают. Получаем No Value с любым из них. В любом случае, спасибо.

DanCue 17.06.2024 22:19

TOCOL на самом деле работает с обоими. =IFERROR(INDEX(SORT(--REGEXEXTRACT(TOCOL(A19:A),"^100% \((\d\d/\d\d/\d{4})\)$")),B$18),"") и =IFERROR(INDEX(SORT(--REGEXEXTRACT(TOCOL(B31:J31),"^100% \((\d\d/\d\d/\d{4})\)$")),B$18),"")

DanCue 17.06.2024 22:23

Вот один из подходов, который вы можете опробовать:

=let(n,B1,
 query(sort(split(A:A,"()")),"Select Col2 Where Col1=1 limit 1 offset "&n-1))

Я могу подтвердить, что это работает. Мне просто интересно, почему используется LET? В этом случае мы используем только один экземпляр n.

DanCue 17.06.2024 20:06

Просто чтобы было просто очевидно, где здесь задействован фактор n и все такое...

rockinfreakshow 17.06.2024 20:09

Вы также можете использовать:

=INDEX(QUERY(SPLIT(A1:A9,"()"),"where Col1=1 order by Col2"),n,2)

Измените n на желаемый номер. Для n=1 у нас есть:

Для горизонтального диапазона используйте TOCOL:

=INDEX(QUERY(SPLIT(TOCOL(A1:I1),"()"),"where Col1=1 order by Col2"),1,2)

Это решение также работает. Допустим, данные распределены по строке, а не по столбцу? Я не уточнил это в вопросе, но просто подумал, что, возможно, мне придется пойти по этому пути. Будет ли это работать или как мне нужно будет изменить его, чтобы адаптироваться?

DanCue 17.06.2024 20:10

замените A1:A9 на TOCOL(range).

z.. 17.06.2024 20:14

=index(sort(ARRAYFORMULA(iferror(datevalue(iferror(REGEXEXTRACT(A2:A10,"[0-9]{2}/[0-9]{2}/[0-9]{4}"))) ))1,правда),1,1)

Измените диапазон, чтобы он отражал ваши данные в части регулярного выражения формулы (например, здесь A2:A10).

Предпоследнее число будет N-й цифрой, обозначающей самую старую.

Другие вопросы по теме

Генерируйте уникальные случайные числа в Google Таблицах
Как объединить несколько транзакций, чтобы отобразить полные сделки в одной строке в Google Sheets?
Есть ли лучший способ создать массив с несколькими запросами на основе динамического диапазона без пустых строк?
Изменение значения в одном столбце с последовательной информацией при изменении значения ячейки в другом столбце
Google Таблицы: объединить два столбца по порядку и зациклить их
Таблицы Google IMPORTXML и XPath href и заголовок не возвращаются
Извлеките долларовое значение из другого листа, суммируйте в таблице данных, когда значение совпадает с другим
Могу ли я изменить эту формулу, чтобы она отслеживала дату начала и окончания вместо списка дат в столбце?
Как создать динамический VSTACK, состоящий из массивов, сформированных с помощью MAKEARRAY в Google Sheets
Google Sheet – сложная формула для выравнивания декартова произведения в одном столбце