2013-06-24 2 views

ответ

5

Кажется, хорошо использовать для AVERAGEIFS ...

enter image description here

+1

Немного короче версия: = AVERAGEIFS (B: B, A: A, > 40999 ", A: A," <41030 ") (распространяется автоматически и не чувствителен к языку). – pnuts

+1

Мне нужно чаще рассматривать региональные эффекты. +1 для решения региональных проблем. Обычно я этого не делаю. да, я думал о B: B и A: A, но тогда мне пришлось перенести мою среднюю сумму на столбец C: и * sheash *, что столбец c грубо. – xQbert

+2

40999 может быть нечувствительным к региону, но он чувствителен к дате (т. Е. 40999 не совпадает с датой даты 1904 года) ..... он также не очень прозрачен. Я бы использовал недвусмысленную функцию DATE, такую ​​как DATE (2012,4,1), или, возможно, лучше иметь 1-й месяц в ячейке, такой как D2, а затем использовать '= AVERAGEIFS (B: B, A: A,"> = "& D2, A : A, "<" & EOMONTH (D2,0) +1) ' –

1

Есть много способов сделать это, но вот один из способов:

=SUMPRODUCT(B1:B4,--(MONTH(A1:A4)=4),--(YEAR(A1:A4)=2013))/SUMPRODUCT(--(MONTH(A1:A4)=4),--(YEAR(A1:A4)=2013)) 

Конечно, изменить число строк, чтобы соответствовать вашим данным в диапазоне

+0

Да, это так ... Но почему "-"? И когда в этом году или месяце нет даты, я получаю деление на 0. Я пробовал несколько способов, и у меня всегда есть одна проблема или другая ... –

+0

«-» - это двойной унарный оператор для преобразования логического True/False в 1/0. AVERAGEIFS избегает вопроса о делении на ноль. – pnuts

1

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

=AVERAGE(DATE(2010,MONTH(A1:A7),DAY(A1:A7))) 

При вводе его в строке формул, которые необходимо выполнить вход с CTRL + SHIFT + ENTER (не только обычный ENTER), так что Excel окружает формула с круглыми скобками {}. Затем вам нужно отформатировать ячейку в качестве даты, например. дд ммм.

Если есть пустые ячейки в диапазоне, то приведенная выше формула даст неправильный результат, так что должна быть адаптирована следующим образом (усложнение):

=AVERAGE(IF(ISNUMBER(A1:A7),DATE(2010,MONTH(A1:A7),DAY(A1:A7)))) 

Это также формула массива.

+0

Я использовал подход CTRL + SHIFT + ENTER, чтобы получить {} раньше. И это сработало. Как и в первом примере. Но зачем нужно использовать {}? Что он делает точно? –

+0

Это называется МАССОВЫЕ ФОРМУЛЫ. Например: [http://www.cpearson.com/excel/ArrayFormulas.aspx] – Michael

+0

Не означает ли это среднее значение дат - конечно, идея состоит в том, чтобы усреднять значения, если они попадают в конкретный месяц, например. '= AVERAGE (IF (MONTH (A1: A10) = 4, IF (YEAR (A1: A10) = 2012, B1: B10)))' –