Извлечь номер после точек в листах Google

У меня есть этот пример листов Google. со столбцом цифр

Вход 37.39850912456523, 176.84092312542114 37.39850912456523, 17.84092312542115 37.39850912456523, 1.84092312542116 37.39850912456523, 176.84092312542117 3,39850912456523, 176,84092312542118 07.39850912456523, 176.84092312542119 3,39850912456523, 176,84092312542120 3,39850912456523, 6,84092312542121

Я попытался использовать эту формулу, чтобы получить таблицу прогресса.

=ArrayFormula(REGEXEXTRACT(A2:A9, "\d{1,3}\.(\d*), \d{1,3}\.(.{5})"))

И при попытке получить 5 цифр после точки в первой группе захвата с помощью .{5} или \d{5} я получаю эту ошибку.

=ArrayFormula(REGEXEXTRACT(A2:A9, "\d{1,3}\.(.{5}), \d{1,3}\.(.{5})"))

Ошибка
Значение параметра 2 функции REGEXEXTRACT "\d{1,3}.(.{5}), \d{1,3}.(.{5})" не соответствует тексту значения параметра 1 функции REGEXEXTRACT "37.39850912456523, 176.84092312542114 ".

Прогресс 39850912456523 84092 39850912456523 84092 39850912456523 84092 39850912456523 84092 39850912456523 84092 39850912456523 84092 39850912456523 84092 39850912456523 84092

Чего мне не хватает, чтобы получить этот результат с REGEXEXTRACT?

Желаемый результат 398509 840923 ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓

И, наконец, этот окончательный результат.

столбец желаемых результатов 1 столбец желаемых результатов 2 37.398509 176.840923 ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ 07.398509 ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
0
63
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Насколько я понимаю, RegexExtract возвращает соответствующий текст, если группа не определена, или первую группу, если она определена. Итак, я определил группу для первых пяти цифр и отбросил остальные

=RegexExtract(A1, "\d*\.(\d{1,6})")

=RegexExtract(A1, "\d*\.\d*, \d{1,3}\.(\d{1,5})\d*")

Функция split() будет автоматически приводить значения к числам, когда это возможно. Чтобы получить окончательный желаемый результат, который вы показываете, используйте round(), например:

=arrayformula( trunc( split(A2:A9, ", ", false, true), 6 ) )

Привет @-- спасибо за ответ, 'round()' не подходит, потому что значение является буквальным, его можно только обрезать.

Osm 30.09.2022 17:31

Тогда используйте trunc(). Отредактировал ответ. Не будет никакой разницы с ограниченными примерными данными, которые вы опубликовали. Если вам нужно сохранить начальные нули, укажите это и покажите это в желаемых результатах.

doubleunary 30.09.2022 17:35

есть вход с ведущим 007.39850912456523 его легко пропустить, и я не проверял результат для него, спасибо за примечание

Osm 30.09.2022 18:04

Пожалуйста, укажите это в вопросе и покажите это в желаемых результатах.

doubleunary 30.09.2022 18:11
Ответ принят как подходящий

они выглядят как координаты, поэтому их лучше ОБРЕЗАТЬ:

=INDEX(IFERROR(1/(1/TRUNC(SPLIT(A1:A, ", "), 6))))

если вы хотите, чтобы это повторялось, попробуйте:

=INDEX(IFERROR(SPLIT(REGEXREPLACE(A1:A, "(\d+.\d{6}).*(, \d+.\d{6}).*", "$1$2"), ",")))


=INDEX(IFNA(REGEXEXTRACT(A:A, "(\d+.\d{6}).+ (\d+.\d{6})")))

и умножьте на 1, если вам нужны значения

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