Google Sheets Извлечение и суммирование числовых данных из строки - PullRequest
0 голосов
/ 28 февраля 2019

В электронной таблице Google следующие данные хранятся в одной ячейке.

a:2:{i:76;a:5:{i:0;a:11:{s:1:"g";s:0:"";s:1:"a";s:0:"";s:2:"st";s:0:"";s:4:"pass";s:0:"";s:2:"pr";s:0:"";s:2:"pu";s:0:"";s:2:"sv";s:0:"";s:2:"sa";s:0:"";s:2:"so";s:0:"";s:4:"poss";s:0:"";s:6:"tended";s:0:"";}i:218;a:14:{s:6:"number";s:0:"";s:1:"g";s:0:"";s:1:"a";s:0:"";s:2:"st";s:0:"";s:4:"pass";s:2:"12";s:2:"pr";s:1:"4";s:2:"pu";s:0:"";s:2:"sv";s:2:"23";s:2:"sa";s:2:"25";s:2:"so";s:0:"";s:4:"poss";s:3:".98";s:6:"tended";s:3:"720";s:6:"status";s:6:"lineup";s:3:"sub";s:1:"0";}i:222;a:14:{s:6:"number";s:0:"";s:1:"g";s:0:"";s:1:"a";s:1:"1";s:2:"st";s:0:"";s:4:"pass";s:2:"14";s:2:"pr";s:2:"17";s:2:"pu";s:2:"33";s:2:"sv";s:0:"";s:2:"sa";s:0:"";s:2:"so";s:0:"";s:4:"poss";s:4:"1.83";s:6:"tended";s:0:"";s:6:"status";s:6:"lineup";s:3:"sub";s:1:"0";}i:237;a:14:{s:6:"number";s:0:"";s:1:"g";s:0:"";s:1:"a";s:0:"";s:2:"st";s:1:"1";s:4:"pass";s:2:"12";s:2:"pr";s:2:"12";s:2:"pu";s:2:"26";s:2:"sv";s:0:"";s:2:"sa";s:0:"";s:2:"so";s:0:"";s:4:"poss";s:4:"1.68";s:6:"tended";s:0:"";s:6:"status";s:6:"lineup";s:3:"sub";s:1:"0";}i:253;a:14:{s:6:"number";s:0:"";s:1:"g";s:1:"1";s:1:"a";s:0:"";s:2:"st";s:1:"4";s:4:"pass";s:2:"12";s:2:"pr";s:2:"17";s:2:"pu";s:2:"29";s:2:"sv";s:0:"";s:2:"sa";s:0:"";s:2:"so";s:0:"";s:4:"poss";s:4:"1.37";s:6:"tended";s:0:"";s:6:"status";s:6:"lineup";s:3:"sub";s:1:"0";}}

Я хотел бы суммировать все значения, присвоенные каждому из полей «pass».

Snippet of Pass Fields     Extracted Data
"pass";s:0:"";                  None
"pass";s:2:"12"                 12
"pass";s:2:"14"                 14
"pass";s:2:"12"                 12
"pass";s:2:"12"                 12
Sum                             50

Если возможно, я бы хотел, чтобы все эти расчеты содержались в пределахотдельная ячейка, без необходимости хранить временные данные в других частях таблицы.Формула должна быть достаточно динамичной, чтобы поддерживать входные строки переменной длины с различным количеством полей «pass».Я пытался использовать сочетание REGEXEXTRACT / FIND вместе с множеством функций подстрок Google листов, чтобы изолировать эти значения, но используя эти методы, я смог вернуть только значение, назначенное первому вхождению «pass»"поле, не все из них.У кого-нибудь есть идеи, как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Посмотрите, работает ли это (при условии данных в A1)

=sum(ArrayFormula(regexextract(substitute(A1, char(34),), rept(".+pass;s:\d+:(\d+)", (len(A1)-len(substitute(A1, "pass",)))/4-1))+0))

Screenshot

0 голосов
/ 28 февраля 2019

Попробуйте Regex: "pass";s:\d+:"(\d+)"

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...