Страницы: 1
RSS
Подсчет уникальных значений в видимых ячейках после применения фильтра
 
Друзья, стоит задача в ячейке A1 посчитать количество уникальных видимых табельных номеров сотрудников (столбец A) поле применения фильтра. При этом один и тот же сотрудник (один и тот же табельный номер) может одновременно работать в нескольких подразделениях (столбец B) - нужно считать только видимые уникальные табельные номера.
Пытался совместить функции ПРОМЕЖУТОЧНЫЕ.ИТОГИ и СЧЁТЕСЛИ, но по-видимому из-за недопонимания принципа работы функции где-то допустил ошибку. Не могу разобраться - что делаю не верно? Поиск по форуму не помог, поскольку с данными функциями задачи ставились несколько иные — не обессудьте, что пришлось создавать новую тему.
Когда применяю фильтр по табельным номерам - подсчет вроде бы верный, но когда применяю его на подразделениях - выходит какой-то бред...
Во вложении, расчет выдал например 2,666666667 уникальных табельных номеров, вместо очевидных 3. Пожалуйста помогите исправить формулу, чтобы расчет выполнялся верно! Макросы на работе использовать запрещено (
 
Друзья, пожалуйста, помогите решить задачу! В ячейке A1 необходимо посчитать количество уникальных табельных номеров колонки A. После применения фильтра. При этом сотрудник с одним и тем же табельным номером может работать одновременно в двух разных подразделениях, (колонка B). Пытался объединить формулы СЧЁТЕСЛИ и ПРОМЕЖУТОЧНЫЕ.ИТОГИ, но видимо из-за недостаточного понимания их принципа получилась какая-то ерунда. Поэтому не обессудьте, что создаю новую тему. Поиск по форуму выдал похожие задачи, но условья в них отличаются.
При этом если фильтровать по значению табельного номера, то расчет происходит вроде верно, а если по подразделению...
В приведенном примере формула насчитала 2,666666667, вместо очевидного ответа 3. Помогите пожалуйста исправить ошибку.
 
Вариант через пользовательскую функцию.
Код
=УНИКАЛЬНЫЕ_ВИДИМЫЕ(A35:A195)
Код
Function УНИКАЛЬНЫЕ_ВИДИМЫЕ(Диапазон As Range) As Long
    Dim dic As Object
    Set dic = CreateObject("Scripting.Dictionary")
    dic.CompareMode = 1
    
    Dim cl As Range
    For Each cl In Диапазон
        If Not cl.EntireRow.Hidden Then
            dic.Item(cl.Value) = 0
        End If
    Next
    УНИКАЛЬНЫЕ_ВИДИМЫЕ = dic.Count
End Function
 
Спасибо, но забыл уточнить, задачу нужно решить именно формулой - на работе запрещены любые макросы (
 
Пока вот так
=SUM(IFERROR(1/MMULT(--(TRANSPOSE(A3:A316)=A3:A316)*SUBTOTAL(103;OFFSET(A1;ROW(A3:A316)-1;));SUBTOTAL(103;OFFSET(A1;ROW(A3:A316)-1;)));))
По вопросам из тем форума, личку не читаю.
 
Вот это да! Гениально! Спасибо громадное! Считать их ручками, учитывая сколько в полной версии документа колонок с фильтрами было адом - вы меня спасли!
 
Вариант.
Код
=SUMPRODUCT(SUBTOTAL(3;OFFSET($A$3;ROW($A$3:$A$316)-ROW($A$3);))*((ROW($A$3:$A$316)-ROW($A$3)+1)=MATCH($A$3:$A$316;$A$3:$A$316;0)))
 
Вариант memo,  более продуктивный.
По вопросам из тем форума, личку не читаю.
 
Цитата
memo: SUMPRODUCT
Цитата
БМВ: более продуктивный
БМВ, это каламбур или мне показалось?  :D
Изменено: Jack Famous - 12.05.2022 09:23:19
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
это признание того что на скору руку в течении раб дня получилось не очень у меня. Хотя мне сразу не нравилось и писал
Цитата
БМВ написал:
Пока вот так
, с прицелом доработать, но memo опередил.
По вопросам из тем форума, личку не читаю.
 
БМВ, жаль — хороший каламбур бы был)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх