Среднее по месяцам в пределах нескольких диапазонов дат excel

у меня есть данные по месяцам с января 2013 - > октябрь 2017 как таковой

MONTH   MY DATA
Jan-13  45.0
Feb-13  23.0
.   
.   
.   
Oct-17  98.4

Я хочу усреднить данные по календарному месяцу для конкретных несмежных диапазонов дат. Например
Январь 2013 - > март 2013 и октябрь 2016 - > Май 2017.

Я считаю, что это может быть достигнуто с помощью функций IF С или, чтобы охватить несколько диапазонов дат, и и, чтобы охватить две даты в каждом диапазоне, чтобы вернуть массив (при вводе в виде формулы массива), а затем использовать averageif на возвращаемый массив.

С моими данными в B5: C62 и мои сделанные на заказ диапазоны дат настроены как:

Period 1 Start: S2
Period 1 End: T2
Period 2 Start: S3
Period 2 End: T3

и мои календарные месяцы в P6: P17, я ввожу свою формулу как

=AVERAGEIF($B:$B,P6,IF(OR(AND($B:$B>=$S,$B:$B<=$T),
AND($B:$B<=$S,$B:$B>=$T)),$C:$C,"ERROR"))

Я получаю #знач! ошибка, хотя я не понимаю, почему. Насколько я могу судить, мое предложение IF должно возвращать "average_range"для Формулы AVERAGEIF для запуска.

какова ошибка в моей формуле или моем подходе?

23
задан branches
02.05.2023 23:42 Количество просмотров материала 2530
Распечатать страницу

1 ответ

в вашей формуле, если() часть не будет возвращать массив, когда есть и() в рамках логического теста. Это можно проверить с помощью встроенного средства отладки формул Excel:выделите часть формулы в строке формул и нажмите F9.

но есть способ вычислить среднее значение, которое вы хотите. В Excel, умножение логических значений преобразует True / False значения в 1 и 0, которые затем можно манипулировать дальше. В качестве примера, это заявление

=(A2:A25>=D2)*(A2:A25<=E2)+(A2:A25>=D3)*(A2:A25<=E3)

возвращает массив

{0;0;0;1;1;1;1;0;0;0;0;0;0;0;0;0;1;1;1;1;1;1;0;0}

из данных, приведенных в таблице ниже. Здесь умножение действует как логическое И и сложение почти как логическое или. (@Máté Juhász может позвонить сюда, чтобы объяснить, почему это не совсем или: -)

этот массив можно рассматривать как" маску " столбца a, где 1 соответствует двум диапазонам дат, заданным начальной и конечной датами.

теперь если() формула может использовать этот массив для создания списка значений, которые вы хотите усреднить:

IF(((A2:A25>=D2)*(A2:A25<=E2)+(A2:A25>=D3)*(A2:A25<=E3)),B2:B25)

это дает массив

{FALSE;FALSE;FALSE;42.9;82.3;90.5;15.6;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;70.8;85.5;19.2;85.4;21.3;55.7;FALSE;FALSE}

который теперь можно подавать на AVERAGE ().

таким образом, одним из решений вашей проблемы является формула, подобная этой (массивной) формуле, в D6:

=AVERAGE(IF(((A2:A25>=D2)*(A2:A25<=E2)+(A2:A25>=D3)*(A2:A25<=E3)),B2:B25))

изменить диапазоны и специальные значения дат, чтобы соответствовать вашим положение.

enter image description here

ячейка ниже "проверить" просто содержит ручной расчет среднего с помощью

=AVERAGE(B5:B8,B18:B23)

надеюсь, это поможет и удачи.

2
отвечен Bandersnatch 2023-05-04 07:30

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх