Оценка функции AVERAGE вызвала ошибку деления на ноль - PullRequest
0 голосов
/ 10 января 2020

В Google sheets я просто ввожу следующие значения через Data Validation.

Data Validation Values

Как только диапазон значений вводится в google sheet, это выглядит следующим образом:

Data range values in cell

Из приведенного выше рисунка:

Я хочу взять среднее значение введенного падения вниз значения в диапазоне между B6 and B14.

Я применил формулу =Average(B6,B14). Но отображается сообщение об ошибке.

Ошибка!

Evaluation of function AVERAGE caused a divide by zero error.

Кто-нибудь знает, как ее решить. Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 10 января 2020

Вы можете использовать следующую формулу:

=AVERAGE(ARRAYFORMULA(REGEXEXTRACT(B6:B14, "\d+")*1))

Объяснение

Функция =REGEXTRACT() извлечет первое совпадение регулярного выражения для данной строки. В этом случае будет извлечена первая цепочка чисел.

Затем результат функции умножается на 1. Это делается для преобразования типа результата =REGEXTRACT() из строки в число, чтобы впоследствии мы могли вычислить среднее значение.

=REGEXTRACT() по умолчанию работает с одиночными строками, но не с несколькими ячейками одновременно , По этой причине мы должны заключить вызов в =ARRAYFORMULA(), что позволит вызывать его с диапазоном в качестве параметра.

Наконец, =AVERAGE() вызывается функция.

Обработка пустых ячеек

С предыдущим ответом, учитывая диапазон, в котором хотя бы одна ячейка пуста / не соответствует регулярному выражению, указанному в =REGEXTRACT() вызов, ошибка будет возвращена. У нас есть два основных варианта решения этой ситуации:

  1. Игнорировать ячейку. Ячейка будет полностью игнорироваться для среднего вычисления:

    =AVERAGE(ARRAYFORMULA(IFERROR(REGEXEXTRACT(B6:B14, "\d+")*1, "")))
    
  2. Обрабатывать ячейку как 0 по отношению к среднему вычислению.

    =AVERAGE(ARRAYFORMULA(IFERROR(REGEXEXTRACT(B6:B14, "\d+")*1, 0)))
    

Оба решения используют функцию =IFERROR(). В случае, если вызов =REGEXTRACT() возвращает ошибку, значение будет заменено соответственно на пустую строку (которая не учитывается при вычислении среднего значения) или вместо 0.

0 голосов
/ 10 января 2020

используйте этот FX:

=ARRAYFORMULA(AVERAGE(IFERROR(REGEXEXTRACT(B6:B14; "\d+")*1)))
...