2

У меня есть некоторые числовые данные в ячейках A1:A10. В B2 я пытаюсь получить среднее значение четных ячеек из A1:A10 (A2, A4, A6 ..) таким образом, чтобы исключить точку данных, если ячейка содержит 0.

Поэтому я использовал формулу AVERAGEIF вместе с оператором IF, чтобы вернуть нужные ячейки, кроме 0.

Моя формула в B2: (Это формула массива, и я действительно нажал ctrl shift, чтобы получить формулу массива)

{=AVERAGEIF(IF(MOD(ROW(A1:A10),2)=0,A1:A10,0),"<>0")}

Эта формула возвращает # ЗНАЧЕНИЕ! и я не понимаю причину того же. Я попытался оценить то же самое, и все выглядит хорошо до предпоследней стадии, однако на последнем шаге вычисления он просто возвращает #VALUE !.

Может ли кто-нибудь еще помочь мне в том, почему эта формула возвращает # ЗНАЧЕНИЕ !? Благодарю.

Дальнейшее обновление

Далее я проверил, что эта формула прекрасно работает в LibreOffice Calc, а также в Google Sheets. В случае с Google Sheets он автоматически добавляется в формулу ArrayFunction самостоятельно после CSE.

Кроме того, я обнаружил, что в автономной справке Excel 2013 для AVERAGEIF упоминается тот факт, что он принимает входные данные массива. Вот выдержка из справки.

Синтаксис функции AVERAGEIF имеет следующие аргументы (аргумент: значение, предоставляющее информацию для действия, события, метода, свойства, функции или процедуры.):

Диапазон Требуется. Одна или несколько ячеек для усреднения, включая числа или имена, массивы или ссылки, содержащие числа.

Критерии обязательны. Критерии в форме числа, выражения, ссылки на ячейку или текста, которые определяют, какие ячейки усредняются. Например, критерии могут быть выражены как 32, "32", «> 32», "яблоки" или B4.

Average_range Необязательно. Фактический набор ячеек в среднем. Если опущено, используется диапазон.

Для меня трудно сказать, является ли это поведением по конструкции или какой-то отсутствующей ошибкой функциональности в MS Excel.

1 ответ1

3

Не все функции могут использоваться в формуле массива, AVERAGIF уже работает аналогичным образом, возможно, он не будет работать в формуле массива.

Вы можете просто использовать это:

{=AVERAGE(IF((MOD(ROW(A1:A10),2)=0)*(A1:A10<>0),A1:A10,""))}

Изменения по сравнению с вашей оригинальной формулой:

  • AVERAGEIF -> AVERAGE
  • 0 (как третий параметр IF) -> "" (AVERAGE игнорирует текст)
  • объединили два критерия в IF:
    (MOD(ROW(A1:A10),2)=0)*(A1:A10<>0)
    • примечание: не используйте AND и OR в формулах массива, так как они не работают должным образом, вместо этого используйте * и + .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .