REGEXEXTRACT для извлечения значений и суммирования ряда чисел - PullRequest
0 голосов
/ 26 октября 2018

В электронной таблице Google у меня есть строка случайного текста и чисел, таких как:

K,,,1-3,,K,RBI-1,RBI-4

Я хочу получить все вхождения RBI-[1-4] и суммировать значенияза каждый RBI-[1-4].Я придумал следующее, которое дает мне массив того, что я хочу:

=ARRAYFORMULA((RIGHT(iferror(REGEXEXTRACT(A1:H1,"RBI-[1-4]"),0))))

Производит:
0,0,0,0,0,0,1,4

Но теперь, когда я хочуСуммируя результаты, я получаю ноль.

=ARRAYFORMULA(SUM((RIGHT(iferror(REGEXEXTRACT(A1:H1,"RBI-[1-4]"),0)))))

Производит
0

Есть предложения, куда я еду на юг?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Формула

=ARRAYFORMULA(SUM(value((RIGHT(iferror(REGEXEXTRACT(A1:H1,"RBI-[1-4]"),0))))))

Объяснение

REGEXTRACT возвращает значения в виде текста, поэтому перед их суммированием мы должны преобразовать их в числа.

Существует несколько способов сделатьэтот.Приведенная выше формула использует функцию VALUE, но мы могли бы также использовать +0, *1, среди других методов.

0 голосов
/ 26 октября 2018

Если вы удалите часть формулы RIGHT, вы увидите, что на самом деле это 0,0,0,0,0,0, RBI-1, RBI-4.Также REGEXEXTRACT возвращает текст.Нам нужно превратить результаты в цифры.Добавление VALUE к формуле сделает это за нас.

=ARRAYFORMULA(IFERROR(VALUE(REGEXEXTRACT(REGEXEXTRACT(A1:H1,"RBI-[0-9]+"),"[0-9]+")),0))

Если вы хотите получить результат без нулей, просто оберните все в SUM.

=SUM(ARRAYFORMULA(IFERROR(VALUE(REGEXEXTRACT(REGEXEXTRACT(A1:H1,"RBI-[0-9]+"),"[0-9]+")),0)))

IЯ уверен, что есть более красноречивый способ сделать это, но это работает.

...