В отфильтрованном списке
= ПРОМЕЖУТОЧНЫЕ.ИТОГИ (3;диапазон)
= SUBTOTAL (3;диапазон)
Если вы хотите подсчитать количество видимых элементов в отфильтрованном списке, вы можете использовать функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ, которая автоматически игнорирует строки, которые скрыты с помощью фильтра.
Функция ПРОМЕЖУТОЧНЫЕ.ИТОГИ может выполнять вычисления, как СЧЁТ, СУММ, МАКС, МИН, и многие другие.
Что делает ПРОМЕЖУТОЧНЫЕ.ИТОГИ: особенно интересным и полезным является то, что она автоматически игнорирует элементы, которые не видны в отфильтрованном списке или таблице. Это делает ее идеальной для показа того, сколько элементов видно в списке, промежуточных итогов видимых строк и т.д.
Следуя примеру, чтобы подсчитать количество не пустых строк, видимых, когда фильтр активен, используйте:
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; B5: B11)
=SUBTOTAL(3; B5:B11)
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103; B5: B11)
=SUBTOTAL(103; B5:B11)
Только с критериями
=СУММПРОИЗВ((диапазон=критерий)*( ПРОМЕЖУТОЧНЫЕ.ИТОГИ (3; СМЕЩ (диапазон; ЧСТРОК;0;1))))
=SUMPRODUCT((диапазон=критерий)*( SUBTOTAL (3; OFFSET (диапазон; ЧСТРОК;0;1))))
Для подсчета видимых строк только с критериями, вы можете использовать довольно сложную формулу, основанную на СУММПРОИЗВ, ПРОМЕЖУТОЧНЫЕ.ИТОГИ и СМЕЩ.
Проблема
Решение
=СУММПРОИЗВ ((C5:C8 = С10) * (ПРОМЕЖУТОЧНЫЕ.ИТОГИ (103;СМЕЩ(C5;СТРОКА(C5:C8) - МИН(СТРОКА(C5:C8));0))))
=SUMPRODUCT ((C5:C8 = С10) * (SUBTOTAL (103;OFFSET(C5;ROW(C5:C8) - MIN(ROW(C5:C8));0))))
Суть этой формулы вычисление массива внутри СУММПРОИЗВ. Первый массив применяет критерии, а второй массив обрабатывает "проблему видимости".
=СУММПРОИЗВ(критерии * видимость)
=SUMPRODUCT(критерии * видимость)
Критерии применяется с частью формулы:
(C5:C8 = С10)
Который генерирует массив следующим образом:
{ЛОЖЬ; ИСТИНА; ЛОЖЬ; ИСТИНА}
Где ИСТИНА означает "отвечает критериям". Обратите внимание, что поскольку мы используем умножение (*) внутри первого (и только) массива, значения ИСТИНА/ЛОЖЬ будут автоматически преобразованы:
{0; 1; 0; 1}
Для учета видимости применяется фильтр с использованием ПРОМЕЖУТОЧНЫЕ.ИТОГИ.
ПРОМЕЖУТОЧНЫЕ.ИТОГИ может исключить скрытые строки в различных вычислениях, поэтому мы можем использовать ее в этом случае, создав "фильтр", чтобы исключить скрытые строки внутри СУММПРОИЗВ. Проблема, однако, в том, что
ПРОМЕЖУТОЧНЫЕ.ИТОГИ рассчитывает единственное число, в то время как нам нужен массив, чтобы использовать его успешно внутри СУММПРОИЗВ.
Хитрость заключается в том, чтобы использовать СМЕЩ, подающую ПРОМЕЖУТОЧНЫЕ.ИТОГИ одну ссылку на строку, так что смещение будет рассчитывать один результат для каждой строки.
Конечно, для этого требуется еще один трюк, который должен дать СМЕЩ массив, содержащий один номер для каждой строки, начиная с нуля. Мы делаем это с помощью:
= СТРОКА (C5:C8) - МИН(СТРОКА(C5:C8)
{0; 1; 2; 3}
Таким образом, второй массив, который обрабатывает видимость с помощью ПРОМЕЖУТОЧНЫЕ.ИТОГИ, генерируется следующим образом:
= ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103;СМЕЩ (C5;СТРОКА(C5: C8) - МИН(СТРОКА(C5: C8)); 0))
= SUBTOTAL(103;OFFSET (C5;ROW(C5:C8) - MIN(ROW(C5:C8)); 0))
= ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103;СМЕЩ (C5; {0; 1; 2; 3}; 0))
= SUBTOTAL(103;OFFSET (C5; {0; 1; 2; 3}; 0))
= ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103; { "Свердловская"; "Пермская"; "Московская"; "Пермская"})
= SUBTOTAL(103; { "Свердловская"; "Пермская"; "Московская"; "Пермская"})
= {1; 1; 1; 0}
И, наконец, мы имеем:
= СУММПРОИЗВ({0;1;0;1} * {1; 1; 1; 0})
= SUMPRODUCT({0;1;0;1} * {1; 1; 1; 0})
Который рассчитывает 1.
Автор проекта
Дмитрий Якушев
Привет! Меня зовут Дмитрий. С 2014 года Microsoft Cretified Trainer. Вместе с командой управляем этим сайтом. Наша цель - помочь вам эффективнее работать в Excel.
Изучайте наши статьи с примерами формул, сводных таблиц, условного форматирования, диаграмм и макросов. Записывайтесь на наши курсы или заказывайте обучение в корпоративном формате.
Сайт https://akademia-excel.ru/
ИП Якушев Дмитрий Александрович
ОГРНИП: 314501721200022
ИНН: 501706813807
Образовательная лицензия № Л035-01255-50/01194039
Почта: info@akademia-excel.ru
Телефон для связи: + 7 (958) 697-73-88, + 7 (495) 145-23-86
Регистрация на сайте означает согласие с пользовательским соглашением и на получение рассылки и рекламных материалов.
Политика в отношении обработки и защиты персональных данных.
Банковские реквизиты:
Расчетный счет 40802810500000003597
Банк АО «Тинькофф Банк»
Юридический адрес Банка Москва, 123060,1-й Волоколамский проезд, д. 10, стр. 1
Корр. счет Банка 30101810145250000974
ИНН Банка 7710140679
БИК Банка 044525974
Подписывайтесь на нас в соц.сетях:
Сайт https://akademia-excel.ru/
ИП Якушев Дмитрий Александрович
ОГРНИП: 314501721200022
ИНН: 501706813807
Образовательная лицензия № Л035-01255-50/01194039
Банковские реквизиты:
Расчетный счет 40802810500000003597
Банк АО «Тинькофф Банк»
Юридический адрес Банка Москва, 123060,1-й Волоколамский проезд, д. 10, стр. 1
Корр. счет Банка 30101810145250000974
ИНН Банка 7710140679
БИК Банка 044525974
Регистрация на сайте означает согласие с пользовательским соглашением и на получение рассылки и рекламных материалов.
Политика в отношении обработки и защиты персональных данных.
Почта: info@akademia-excel.ru
Телефон для связи: + 7 (958) 697-73-88, + 7 (495) 145-23-86
Написать в тех.поддержку
Подписывайтесь:
авторизуйтесь