2015-02-25 5 views
1

В настоящее время я использую функцию =COUNTIFS() для подсчета количества значений, удовлетворяющих двум условиям.Excel COUNTIFS подсчитывает месяцы в диапазоне дат

=COUNTIFS('2014'!$F:$F, B3, '2014'!$H:$H, A13) 

Однако я не хочу, чтобы также включать в себя конкретные месяцы в качестве условия, но диапазон дат в формате, 3/11/2014. Я просмотрел несколько разных способов, которые могут подсчитывать конкретные месяцы из списка дат, используя комбинацию формул =SUMPRODUCT() и MONTH, но не в состоянии найти ту, которая работает в функции COUNTIFS, чтобы удовлетворить и исходные условия.

Я даже пытался думать за пределами коробки с помощью диких карт,

=COUNTIFS('2014'!$F:$F, B3, '2014'!$H:$H, A13, '2014'!$A:$A, "*/11/2014") 

Увы безрезультатно.

Кто-нибудь знает, есть ли способ включить подсчет конкретных месяцев в функцию =COUNTIFS()?

EDIT *

У меня есть временное решение, то не верное решения пожара, но я создал вспомогательный столбец, содержащего

=TEXT(A1, "DD/MM/YYYY") 

И связал это с моим оригинальным диким раствором карты

=COUNTIFS('2014'!$F:$F, B3, '2014'!$H:$H, A13, '2014'!$I:$I, "*/11/2014") 

однако все еще после чего-то немного скуднее!

+0

ли все даты с 2014 года? – chancea

+0

Да, они все с 2014 года. –

+0

И ваши данные 'd/mm/yyyy'? – chancea

ответ

2

Так как кажется, что все ваши для первенствует даты установлены в формате dd/mm/yyyy эта формула должна работать:

=COUNTIFS('2014'!$F:$F, B3, '2014'!$H:$H, A13, '2014'!$A:$A, ">="&EOMONTH(DATE(2014,10,1),0)+1,'2014'!$A:$A,"<"&EOMONTH(DATE(2014,11,1),0)+1) 

Это в основном проверяет столбец против промежутка всего месяца. Все даты больше или равно Начало нужного месяца, и все даты менее начало следующего месяца.

Чтобы изменить месяц:

=COUNTIFS('2014'!$F:$F, B3, '2014'!$H:$H, A13, '2014'!$A:$A, ">="&EOMONTH(DATE(2014,10,1),0)+1,'2014'!$A:$A,"<"&EOMONTH(DATE(2014,11,1),0)+1) 
                        ^^ change 10 to one month prior    ^^ change 11 to the month you want. 
+3

Я думаю, что это лучший подход - особенно для больших диапазонов - но в целом я предлагаю всегда использовать > = 1 и <1-го числа следующего месяца, которые всегда будут правильно фиксировать все даты месяца (и даты других месяцев), даже если значения времени включены –

0

Если месяц вы сравниваете это числовой формат (январь 1, февраль 2, и т.д.), вы можете использовать следующее:

=SUMPRODUCT(('2014'!$F:$F= B3)*('2014'!$H:$H= A13)*(Month('2014'!$A:$A) = 5)*1) 

Это будет искать значения могут, например.

Как это работает:

SUMPRODUCT работы в условиях тестирования по всему диапазону ячеек. Для каждой строки в нашем случае мы проверяем, имеет ли значение F значение B13, H содержит данные A13, а месяц A - 5. Каждое из этих тестов вернет TRUE или FALSE. TRUE также 1 и False также 0, поэтому тестирует строку будет выглядеть следующим образом:

Row 1: TRUE * TRUE * TRUE * 1 = 1 
Row 2: FALSE * TRUE * TRUE * 1 = 0 
Row 3: TRUE * TRUE * FALSE * 1 = 0 
Row 4: TRUE * TRUE * TRUE * 1 = 1 
-------------------------------------- 
TOTAL:        2 

Каждое условие в его собственном paranthetical заявления и умножается на других условиях, так что это приведет к 1 или 0, которые SUMPRODUCT будет складываться, когда будет проведено тестирование каждой строки в вашем диапазоне.

+0

Не могли бы вы объяснить, как это работает, поскольку оно возвращает' # VALUE', большое спасибо за вашу помощь. –

+1

Вы ставите. Я просто добавил краткое описание sumproduct. Это весело. – JNevill

+0

Ах, фантастика, у меня будет дрожь и посмотреть, не пропустил ли я что-нибудь, что вызывает мою ошибку, спасибо! –

1

Например в январе вы можете включить что-то вроде:

=COUNTIFS(A:A,">"&41639,A:A,"<"&41650) 

предполагающей ваши даты являются числовыми, а не строки.

Смежные вопросы