#regex #google-sheets #split #google-sheets-formula #substitution
#регулярное выражение #google-sheets #разделение #google-sheets-формула #замена
Вопрос:
У меня есть ячейка Google Sheets, содержащая список людей, посещающих мероприятие. Некоторые гости приведут друзей. Таким образом, ячейка (A1) может выглядеть следующим образом:
Ben, Sarah 2, James , Mary 5
Мне нужно подсчитать общее количество посетителей, которое в данном случае равно 11. И поэтому я подумал об использовании формулы в следующих строках:
=count(SPLIT(SUBSTITUTE(A1," ",","),","))
Но это не работает, потому что он считает числа только как 1 элемент, а функция подсчета, похоже, не работает.
Как я могу заставить это работать, чтобы оно правильно указывало количество участников как 11?
Ответ №1:
Вы можете использовать следующую формулу
=IF(LEN(A2),
SUM(COUNTA(SPLIT(A2,",")),
IFERROR(SPLIT(REGEXREPLACE(A2,"D"," ")," "))),"")
Используемые функции:
Ответ №2:
Вы можете получить общую сумму, выполнив это:
=if(regexmatch(A1," "),sum(ArrayFormula(query(split(transpose(split(A1,","))," "),"select count(Col1), sum(Col2)",0))),if(isblank(A1),"",counta(split(A1,","))))
Объяснение:
if(regexmatch(A1," "), something, if(isblank(A1),"",counta(split(A1,","))))
=> если в ответе нетsplit(A1,","))," ")
=> красная область => разделит ячейку запятыми, а результат можно увидеть в красной области на картинкеsplit(TRANSPOSE(split(A1,","))," ")
=> зеленая область => будет перебирать каждый из приведенных выше результатов и выделять в ячейку справа значенияquery(split(TRANSPOSE(split(A1,","))," "),"select count(Col1), sum(Col2)",0)
=> синяя область => затем мы запросим 2 столбца, в левом мы хотим подсчитать количество строк в этом столбце (столбцы с именами), в следующем столбце мы хотим суммировать значения (плюсовые)sum(ArrayFormula(query(split(transpose(split(A1,","))," "),"select count(Col1), sum(Col2)",0)))
=> желтая область => затем мы суммируем значения 2 столбцов, чтобы получить конечный результат
Комментарии:
1. Спасибо за ваш ответ @nabais. Когда добавленных гостей нет, выдается сообщение об ошибке. Поэтому, когда ячейка содержит «Бен, Сара, Джеймс, Мэри», она выдает ошибку #value. Как это можно исправить?
2. обновил мой ответ, проверьте сейчас, пожалуйста, работает ли он для вас @TimB
3. Спасибо @nabais. И последняя проблема: если ячейка пуста, результат отображается как 1, а не как ноль. Должен ли я просто использовать if(A1=»»,»», …..) или есть лучший способ внести изменения в формулу?