Excel: Сложная формула, необходимая для подсчета записей

#excel #excel-formula #formulas

#excel #excel-формула #формулы

Вопрос:

Я ищу какую-нибудь помощь с формулой. На моем листе «данные» у меня есть данные в формате ниже:

 А В С Д Е Ф Г Ч И Й
1 UID RecordType HCode AdmittedDate Имя Фамилия DOB Пол STDate RDate 
2 87962 STAsses STIV1 01/01/2012 Марк Джонс 13.07.1978 Мужчина 09/12/2012 
3 89658 Передача GLSI2 01/01/2012 Элисон Эйткен 20/12/1956 Женщина 08/07/2013 
4 84563 Разряд JHOP1 01/01/2012 Дэвид Бекхэм 08.09.1987 Мужчина 07.08.2013
5 89654 STAsses STGE1 01/01/2012 Эндрю Макбет 27/09/1976 Мужчина 08/07/2012 
6 89867 Вид ТРАНСФЕРА1 01/01/2012 Джордж Диас 05.08.1989 Мужчина 07.08.2013
7 87962 Трансфер СТИВ1 01/01/2012 Марк Джонс 13/07/1978 Мужчина 04/03/2013 
8 89654 Передача STGE1 01/01/2012 Эндрю Макбет 27/09/1976 Мужчина 12/08/2012

На моем листе «отчет» у меня настроена следующая таблица:

 Б С Д Е Ф
4 Тип записи HospCode июль-12 август-12 сентябрь-12
5 Оценок STGE1
6 переводов
7 разрядов
8

Я хотел бы сделать 2 вещи.

  1. В D5, E5, F5 требуется формула для возврата количества записей ‘STAssess’ для HCode ‘STGE1’ из таблицы данных, которые были завершены в месяце, указанном в D4 листа ‘report’ (12 июля). Даты для этих записей указаны в столбце I таблицы данных — «Стандартная дата».

Я пробовал использовать SUMPRODUCT, который работает до некоторой степени, но у меня возникают трудности с возвратом записей, завершенных только в июле. Мне нужно, чтобы формула была динамической, поскольку она возвращает результаты только за месяц, введенный в D4 (поэтому диапазон дат, встроенный в формулу, не выполняет эту работу).

  1. В D5, E5, F5 мне нужно вернуть количество записей из таблицы «данные», которые имеют «Перенос» в столбце B (RecordType), «STGE1» в столбце C (HKode) и дату в столбце J (RDate), которая приходится на месяц, указанный в D4 листа «отчет» (12 июля).).

У кого-нибудь есть идеи? Таблица данных на самом деле будет внешним файлом .csv, которым нельзя манипулировать. Я не против использовать другие скрытые листы для выполнения любой сортировки, которую необходимо выполнить, при условии, что это можно настроить так, чтобы при вводе данных не требовалось никакой дополнительной работы.

Спасибо!

Ответ №1:

Для обоих ваших вопросов вы можете использовать COUNTIFS . Это проще для понимания (для меня) и совместимо с Excel 2007 и новее.

Первый вопрос:

 =COUNTIFS(DATA!B:B,"STAsses",DATA!C:C,$B5,DATA!I:I,">="amp;D$4,DATA!I:I,"<"amp;DATE(YEAR(D4),MONTH(D4) 1,1))
  

Второй вопрос:

 =COUNTIFS(DATA!B:B,"Transfer",DATA!C:C,$B5,DATA!J:J,">="amp;D$4,DATA!J:J,"<"amp;DATE(YEAR(D4),MONTH(D4) 1,1))
  

И эти формулы можно перетащить в нужный вам диапазон.

Комментарии:

1. Привет! Большое спасибо за вашу помощь с этим. Первая определенно работает. Пока не уверен во втором, но это выглядит многообещающе. Пытался проголосовать, но это мне пока не позволяет (недостаточно репутации!). Можете ли вы дать мне краткое объяснение того, как работает вторая формула, чтобы гарантировать, что она учитывает только записи ‘Transfer’, которые также имеют соответствующую запись ‘STAssess’. Запись STAssess может быть выполнена в любое время.

2. Спасибо. Вы можете отметить в качестве ответа, если это соответствует вашим потребностям. Это позволит другим узнать, что это сработало для вас, если у них есть похожие потребности. Что касается Transfer которые имеют соответствующую STAssess запись, это сложная задача (и не является частью вашего первоначального вопроса). Мне нужно было бы немного подумать об этом, но, похоже, вам понадобятся несколько вспомогательных столбцов, чтобы это произошло. Что бы я сделал, чтобы сохранить этот вопрос чистым, так это использовал это новое требование и создал новый вопрос.

3. Еще раз спасибо. Вы абсолютно правы. Я хотел добавить это в качестве третьего условия к моему 2-му вопросу, но, перечитав его там, я явно этого не сделал. Будет спрашивать отдельно.

Ответ №2:

Вот пример формулы, которую вы могли бы использовать для ячейки D5, указывает ли она вам правильное направление?:

 {=SUM(IF($B$2:$B$8=$B14,IF($C$2:$C$8=$A14,IF($D$2:$D$8=C$13,1,0),0),0))}
  

Это функция массива, поэтому вы должны ввести ее без {} на каждом конце и использовать Ctrl Shift Enter для ввода формулы.

Комментарии:

1. Спасибо за эту отправную точку. Я уже был на аналогичной стадии, но с этим возникли некоторые проблемы. например, последняя часть функции SUM, которую вы предоставили — для чего ссылка C13?

2. Вот та же формула с добавленными правильными ссылками: =СУММА (ЕСЛИ(Данные!B2: B8= «STAssess», ЕСЛИ(Данные!C2: C8= Отчет!B5, ЕСЛИ(Данные!I2: I8= D4,1,0),0),0)) Я подозреваю, что это последняя часть для диапазона дат, из-за которой результат равен 0 (он должен быть 1). В таблице данных столбец I содержит список дат в формате ДД / ММ / ГГГГ. В формуле должны учитываться даты в этом столбце за месяц, указанный в D4 листа отчета (12 июля).

Ответ №3:

Если ваша сводная таблица выглядит как

 HospCode    RecordType  12-Jul  12-Aug  12-Sep
STGE1       STAsses     1       0       0
STGE1       Transfer    0       1       0
STGE1       Discharges  0       0       0
  

И ваши данные находятся в таблице с именем Table1, затем в D5

 =SUMPRODUCT((Table1[HCode]=$B5)*(Table1[RecordType]=$C5)*(MONTH(Table1[STDate])=MONTH(D$4)))
  

Я не уверен, что вы подразумеваете под «вернуть», но предположим, вы имеете в виду, что хотите показать это, когда RecordType = столбец C и когда RecordType = «Transfer» и RDate находятся в нужном месяце. Затем

 =SUMPRODUCT((Table1[HCode]=$B5)*(Table1[RecordType]=$C5)*(MONTH(Table1[STDate])=MONTH(D$4))) SUMPRODUCT((Table1[HCode]=$B5)*(Table1[RecordType]="Transfer")*(MONTH(Table1[RDate])=MONTH(D$4)))
  

Комментарии:

1. Привет, спасибо за вашу помощь. Данные отсутствуют в таблице. Она находится на листе под названием «данные» и полностью неформатирована. Она скопирована из файла .csv, но я хочу иметь возможность напрямую ссылаться на файл .csv после сортировки формул. Под «вернуть» я просто имел в виду «подсчитать». Чего я не хочу, так это просто подсчитывать все записи ‘transfer’ для HCode в B5 и в месяце, показанном в D4. Я хочу, чтобы он учитывал только записи «переноса» для кода HospCode, показанного в отчете! B5, с датой в Данных!J:J = к этому в отчете! D4 и только в том случае, если ранее была запись ‘STAssess’ для того же UID.

2. Я изменил вашу вторую формулу, чтобы использовать соответствующие ссылки на лист / ячейку, но теперь я получаю ошибку в Excel (2013)… «Мы обнаружили проблему с этой формулой. Не пытаетесь ввести формулу? Когда первый символ является знаком равенства или минуса, Excel считает, что это формула «.