COUNTIFS для кількох критеріїв на кількох аркушах


1

Допоможіть хлопці!

Я намагаюся придумати дуже коротку формулу для обчислення кількох даних на кількох аркушах.

У мене є одна робоча книжка, в якій я складаю повідомлення про помилки, які отримую від кількох людей. Повідомлення про помилки, які вони надсилають, - це ті, які вони бачать із 22 різних матеріалів. Я хотів би згрупувати звіти про помилки по місяцях, починаючи з грудня 2014 року по грудень 2015 року.

На кожному аркуші я створив окремий стовпець під назвою "Статус", щоб вказати, чи була кожна з повідомлених помилок уже "Завантажена", чи є в режимі очікування, "Надіслано перекладачеві" тощо. На окремому аркуші я вказав назви всіх 22 матеріалів у першому ряду, а потім я перераховував щотижневі дати в першому стовпчику.

В основному, я хотів би статися, це рахувати за помилки під певним матеріалом з грудня 2014 року по грудень 2015 року, якщо і лише якщо помилки підпадають під конкретні "Статуси", а помилки надсилаються протягом певного строку (тижневі дати, наприклад , Лютий23-березень1).

Поки що я використовую цю дуже довгу формулу:

= COUNTIFS ('грудень 2014'! $ A: $ A, "> =" & $ A15, 'грудень 2014'! $ A: $ A, "<=" & $ B15, 'грудень 2014'! $ J: $ J, "Застосовано", "Грудень 2014"! $ G: $ G, "=" & C $ 1) + COUNTIFS (січень! $ A: $ A, "> =" & $ A15, січень! $ A: $ A, "<=" & $ B15, січень! $ J: "застосовано", січень! $ G: $ G, "=" & C $ 1) + COUNTIFS (лютий! $ A: $ A, "> =" & $ A15, лютий! $ A: $ A, "<=" & $ B15, лютий! $ J: $ J, "Застосовано", лютий! $ G: $ G, "=" & C $ 1) + COUNTIFS (березень! $ A: $ A, "> =" & $ A15, березень! $ A: $ A, "<=" & $ B15, березень! $ J: $ J, "Застосовано", березень! $ G: $ G, "=" & C $ 1) + COUNTIFS ("грудень 2014"! $ A: $ A, "> =" & $ A15, 'грудень 2014'! $ A: $ A, "<=" & $ B15, 'Грудень 2014 '! $ J: $ J, "Надіслано перекладачеві", "Грудень 2014"! $ G: $ G, "=" & C $ 1) + COUNTIFS (січень! $ A: $ A, "> =" & $ A15, січень! $ A: $ A, "<=" & $ B15, січень! $ J: $ J, "Надіслано перекладачу", січень! $ G: $ G, "=" & C $ 1) + COUNTIFS (лютий ! $ A: $ A, "> =" & $ A15, лютий! $ A: $ A, "<=" & $ B15, лютий! $ J: $ J, "Надіслано перекладачеві", лютий! $ G: $ G, "=" & C $ 1) + COUNTIFS (березень! $ A: $ A, "> =" & $ A15, березень! $ A: $ A, "<=" & $ B15, березень! $ J: $ J, "Надіслано до перекладача", березень! $ G: $ G, "=" & C $ 1) + COUNTIFS ("грудень 2014"! $ A: $ A, "> =" & $ A15, 'грудень 2014'! $ A: $ A, "<=" & $ B15, 'грудень 2014'! $ J: $ J, "Чекаємо на завантаження", "грудень 2014"! $ G: $ G,"=" & C $ 1) + COUNTIFS (січень! $ A: $ A, "> =" & $ A15, січень! $ A: $ A, "<=" & $ B15, січень! $ J: $ J, " Чекаємо на завантаження ", січень! $ G: $ G," = "& C $ 1) + COUNTIFS (лютий! $ A: $ A,"> = "& $ A15, лютий! $ A: $ A," <= " & $ B15, лютий! $ J: $ J, "Чекаю на завантаження", лютий! $ G: $ G, "=" & C $ 1) + COUNTIFS (березень! $ A: $ A, "> =" & $ A15 , Березень! $ A: $ A, "<=" & $ B15, березень! $ J: $ J, "Чекаємо на завантаження", березень! $ G: $ G, "=" & C $ 1) + COUNTIFS ('грудень 2014 '! $ A: $ A, "> =" & $ A15,' Грудень 2014 '! $ A: $ A, "<=" & $ B15,' Грудень 2014 '! $ J: $ J, "Завантажено" , 'Грудень 2014'! $ G: $ G, "=" & C $ 1) + COUNTIFS (січень! $ A: $ A, "> =" & $ A15, січень! $ A: $ A: $ A, "<= "& $ B15, січень! $ J: $ J," Завантажено ", січень! $ G: $ G," = "& C $ 1) + COUNTIFS (лютий! $ A: $ A,"> = "& $ A15 , Лютий! $ A: $ A, "<=" & $ B15, лютий! $ J: $ J, "Завантажено", лютий! $ G: $ G, "=" & C $ 1) + COUNTIFS (березень! $ A : $ A, "> =" & $ A15, березень! $ A: $ A, "<=" & $ B15, березень! $ J: $ J, "Завантажено", березень! $ G: $ G, "= "& C $ 1) + COUNTIFS (" грудень 2014 "! $ A: $ A,"> = "& $ A15, 'грудень 2014'! $ A: $ A," <= "& $ B15, 'грудень 2014'!) $ J: $ J, "Аудіо", "Грудень 2014"! $ G: $ G, "=" & C $ 1) + COUNTIFS (січень! $ A: $ A, "> =" & $ A15, січень! $ A : $ A, "<=" & $ B15, січень! $ J: $ J, "Аудіо", січень! $ G: $ G, "=" & C $ 1) + COUNTIFS (лютий! $ A: $ A, " > = "& $ A15, лютий!$ A: $ A, "<=" & $ B15, лютий! $ J: $ J, "Audio", лютий! $ G: $ G, "=" & C $ 1) + COUNTIFS (березень! $ A: $ A , "> =" & $ A15, березень! $ A: $ A, "<=" & $ B15, березень! $ J: $ J: "Audio", березень! $ G: $ G, "=" & C $ 1 ) + COUNTIFS ('грудень 2014'! $ A: $ A, "> =" & $ A15, 'грудень 2014'! $ A: $ A, "<=" & $ B15, 'грудень 2014'! $ J: $ J, "Резерв", "Грудень 2014"! $ G: $ G, "=" & C $ 1) + COUNTIFS (січень! $ A: $ A, "> =" & $ A15, січень! $ A: $ A , "<=" & $ B15, січень! $ J: $ J, "Режим очікування", січень! $ G: $ G, "=" & C $ 1) + COUNTIFS (лютий! $ A: $ A, "> =" & $ A15, лютий! $ A: $ A, "<=" & $ B15, лютий! $ J: $ J, "Резерв", лютий! $ G: $ G, "=" & C $ 1) + COUNTIFS (березень ! $ A: $ A, "> =" &$ A15, березень! $ A: $ A, "<=" & $ B15, березень! $ J: $ J, "Резерв", березень! $ G: $ G, "=" & C $ 1)

Поки що це лише з грудня 2014 року по березень 2015 року. Я не уявляю, як довго це пройде, коли я включив інші місяці.

Чи є спосіб зробити цю формулу коротшою?

Заздалегідь дуже дякую! :)


святі дивні шкарпетки, це епічна формула!

Це є. Я просто не хочу, щоб робоча книжка раптом не працювала або не «вибухала» через цю вигадливу формулу.
фантомфіф

Відповідно до файлу довідки ( для Excel 2010 ) максимальна довжина формули становить 32 767 символів (у запитанні 2749, тож у вас залишилося місце), а Excel дозволяє отримати 64 рівні вкладених функцій. Технічно ви не будете "вибухати" Excel. ;-)
agtoever

Відповіді:


1

Я думаю, що принаймні два життєздатні варіанти. Виходячи з ваших обставин, один може бути більш підходящим, ніж інший. Я дам вам два варіанти, про які я міг би придумати і побачити, чи можете ви працювати звідти.

Варіант 1: Потужність Pivot
від Microsoft Сила Pivot дозволяє об'єднати кілька джерел подібних даних і створити одну зведену таблицю з нього. Якщо ви додаєте кожен робочий аркуш як джерело даних і додаєте його до своїх даних, ви можете згорнути і відфільтрувати відповідно до своїх критеріїв.

Варіант 2: Використовувати ПОСЛУГИ
Ви можете використовувати INDIRECTфункцію для застосування критеріїв. Якщо я вас правильно зрозумів, я би склав матрицю, що містить місяці (назви робочих таблиць) на вертикальній осі та стан (Прикладений, Надісланий, Чекаю завантаження, ...) на горизонтальній осі. Далі ви можете заповнити свою матрицю COUNTIFформулою, скориставшись INDIRECTфункцією для посилання на різні робочі аркуші та застосувати різні статуси. Наприклад, якщо у вас є "грудень 2014 року" в A2, INDIRECT("'"&A2&"'!$A:$A")це посилається на 'December 2014'!$A:$A. Далі ви просто додаєте значення по горизонталі та вертикалі, щоб створити підсумкові дані за статусом та на місяць. Сума всієї матриці - бажаний результат.


Редагувати:
пояснено варіант 2:
Як вимагає ОП, ось трохи більш поглиблене пояснення другого варіанту. Для ілюстрації я познайомлю Анні, Бену та Чарльза, які проходять три курси. Вони отримують кілька оцінок (від 1 до 10) за кожен курс. Кожен клас зараховується до певного триместру. Лектор курсу хоче порівняти кількість достатніх (> 5,5) балів для кожного студента в кожному курсі за перший триместр. Ось різні курси (кожен курс знаходиться в окремих робочих аркушах, які називаються "Курс1", "Курс2" та "Курс3".

Анна, Бен енд Чарльз класи

Подібно до вашої проблеми, у нас є декілька критеріїв (> 5,5, триместр = 1, рахуйте для декількох курсів, а також для кількох студентів). Клітина топлефта всередині матриці (Course1 x Anna, на моєму аркуші це в B5) містить таку формулу:

=COUNTIFS(INDIRECT($A5&"!A:A");B$4;INDIRECT($A5&"!B:B");$C$2;INDIRECT($A5&"!C:C");$C$1)

Посилання на клітинку:

  • A5 вказує на клітинку, що містить "Course1"
  • B4 вказує на клітинку, що містить "Anna"
  • C2 вказує на клітинку, що містить "1" (для триместру)
  • C1 вказує на клітинку, що містить "> 5,5" (для класу)

Переклад вашої проблеми такий:

  • Курси -> місяці
  • Імена учнів -> Статус
  • А решта - банальна

В основному хитрість полягає в тому, щоб перелічити назви аркушів у списку та використовувати їх у поєднанні з INDIRECTфункцією для посилання на різні місяці. Якщо ви зробите те саме для різних статусів, ви отримаєте матрицю. Порахуйте (використовуючи COUNTIFS) значення, які ви хочете порахувати. Загальна сума значень у матриці - це загальна кількість (підсумована за різні місяці та різні статуси), яку ви шукаєте.

Ще один спосіб: замість того, щоб самостійно формувати складну формулу, спробуйте дозволити Excel виконати роботу за вас.


Привіт! Дякую вам за те, що знайшли час, щоб прочитати мою стурбованість та за надання цих варіантів. Я дуже ціную ваші зусилля для цього. На жаль, у мене в програмі Excel 2010 не встановлено Power Pivot. Мені цікаво, чи можу я зробити те ж саме із зведеною таблицею. Крім того, я думаю, що функція INDIRECT дійсно допомогла б мені. Однак функція INDIRECT для мене дійсно нова. Зараз я досліджую, як використовувати функцію. Мені дуже шкода, якщо мені здається занадто повільним, щоб поглинати це. Тим не менш, ваша пропозиція дійсно мені дуже допоможе. ^ _ ^ Приємного дня!
фантоміф

@phantomthief Я додав більш детальне пояснення, використовуючи приклад, аналогічний вашому випадку. Я сподіваюся, що це допомагає пояснити, що я маю на увазі.
agtoever

Вибачте за дуже пізню відповідь. Я деякий час відпочивав на справі. Я спробував вашу пропозицію. ^ _ ^ Це допомогло мені, і я зміг використовувати й інші інструменти Excel, щоб досягти своєї мети. Дуже дякую!
фантоміф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.