Суммы СУММ в условиях МЕСЯЦ / ГОД - PullRequest
0 голосов
/ 07 октября 2019

У меня есть следующая таблица

╔════════════╦════════════╦════════╦════════╗
║ Booking    ║ Check-in   ║ Dif    ║ Status ║
╠════════════╬════════════╬════════╬════════╣
║ 25-09-2018 ║ 19-05-2019 ║ 234.15 ║ OK     ║
╠════════════╬════════════╬════════╬════════╣
║ 26-09-2018 ║ 05-05-2019 ║ 281.21 ║ OK     ║
╠════════════╬════════════╬════════╬════════╣
║ 26-09-2018 ║ 18-05-2019 ║ 264.11 ║ OK     ║
╠════════════╬════════════╬════════╬════════╣
║ 01-10-2018 ║ 19-06-2019 ║ 260.42 ║ CL     ║
╠════════════╬════════════╬════════╬════════╣
║ 01-10-2018 ║ 18-05-2019 ║ 228.16 ║ OK     ║
╚════════════╩════════════╩════════╩════════╝

Я пытался создать формулу sumproduct, которая будет содержать сумму «Dif», если месяц и год регистрации и дата бронирования совпадают при условииэтот статус в порядке.

Таблица вывода, которую я хочу сгенерировать, имеет следующую форму:

╔══════════════════╦═════╦══════╗
║ Booking/Check-in ║ May ║ June ║
╠══════════════════╬═════╬══════╣
║ September        ║     ║      ║
╠══════════════════╬═════╬══════╣
║ October          ║     ║      ║
╚══════════════════╩═════╩══════╝

Формула, которую я использовал и получил ошибку, была:

=SUMPRODUCT(--('Data'!$D$2:$D$5="OK")*(MONTH('Data'!$A$2:$A$5)=MONTH($A2))*(YEAR('Data'!$A$2:$A$5)=YEAR($A2))*(MONTH('Data'!$B$2:$B$5)=MONTH(B$1))*(YEAR('Booking data'!$B$2:$B$5)=YEAR(B$1))*('Data'!$C$2:$C$5))

Есть идеи?

Заранее спасибо

Ответы [ 4 ]

1 голос
/ 07 октября 2019

Solutions

Я думаю, что название месяца в вашей выходной таблице фактически является датой, отформатированной как полное имя месяца.

Если вы хотите суммировать толькоимя месяца, а не фактическая дата, вот один из способов сделать это:

=SUMPRODUCT((TEXT($A$2:$A$6,"mmmm")=$A9)*(TEXT($B$2:$B$6,"mmmm")=B$8)*($D$2:$D$6="OK")*($C$2:$C$6))

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

=SUMPRODUCT((TEXT($A$2:$A$6,"MMM-YY")=TEXT($A13,"MMM-YY"))*(TEXT($B$2:$B$6,"MMM-YY")=TEXT(B$12,"MMM-YY"))*($D$2:$D$6="OK")*($C$2:$C$6))

Исправьте ссылки на ячейки по мере необходимости. Cheers:)

Хитрость заключается в том, чтобы использовать функцию TEXT для преобразования дат в текстовый формат, в моем примере это "MMM-YY", поэтому их можно легко сравниватьбез необходимости сравнения месяца и года отдельно. К сожалению, функция EOMONTH не поддерживает вычисления в массивах, в противном случае решение может быть несколько проще.

1 голос
/ 07 октября 2019

Предполагая, что названия месяцев в выходной таблице являются датами первого месяца / года, отформатированного для отображения в качестве полного названия месяца, вы можете использовать SUMIFS:

Я преобразовал таблицу данных в Таблица , чтобы иметь возможность использовать структурированные ссылки, которые я считаю более понятными в сложных формулах:

=SUMIFS(Table1[[Dif]:[Dif]],Table1[[Status]:[Status]],"OK",Table1[[Booking]:[Booking]],">="&$F2,Table1[[Booking]:[Booking]],"<=" &EOMONTH($F2,0),Table1[[Check-in]:[Check-in]],">="&G$1,Table1[[Check-in]:[Check-in]],"<="&EOMONTH(G$1,0))

Мы определяем дату, гарантируя, что бронирование и / или проверкадаты встречаются в том же месяце, что и выходная таблица. Это, конечно, гарантирует, что месяц и год совпадают.

Адреса G$1 и $F2 будут зависеть от расположения выходной таблицы. Но как только вы введете формулу, например, G2, вы можете заполнить / перетащить ее вниз и поперек, и ссылки должны автоматически скорректироваться.

enter image description here

enter image description here

1 голос
/ 07 октября 2019

Для этого вам нужны PIVOT TABLES:

Pivot Tables

Я получил эти данные, ивыходной сводной таблицы:

Данные:

enter image description here

Выход:

enter image description here

Моя настройка для моей сводной таблицы:

  1. Booking поле в ROWS
  2. Check-in поле в COLUMNS
  3. Обаполя (Booking и Check-in) сгруппированы по МЕСЯЦАМ (отметка Группировать или разгруппировать данные в сводной таблице )
  4. Status в FILTERS и установите его так, чтобы отображались только значения ОК .
  5. Dif В поле VALUES
  6. Я также деактивировал общие итоги и промежуточные итоги (это необязательно)

Надеюсь, это поможет. В выходных данных июнь не отображается, потому что в июне нет значений OK для суммирования

0 голосов
/ 08 октября 2019

Спасибо всем за ваши ответы. Я понял, что я должен делать. Пожалуйста, найдите ниже формулу:

=SUMPRODUCT(--('Data'!$D$2:$D$5="OK"),(MONTH('Data'!$A$2:$A$5)=MONTH($A2))*(YEAR('Data'!$A$2:$A$5)=YEAR($A2))*(MONTH('Data'!$B$2:$B$5)=MONTH(B$1))*(YEAR('Data'!$B$2:$B$5)=YEAR(B$1))*'Data'!$C$2:$C$5)
...