Страницы: 1
RSS
Подсчет уникальных значений в определенный промежуток времени, Помогите с формулой
 
Существует база, куда заносятся данные обратившихся. Необходимо подсчитать количество обратившихся лиц (персон), т.е. в отчетном периоде гражданин Фамилия1 обращался 3 раза, Организация1 - 1 раз, но в отчете подсчитывается не количество обращений, а количество ТЕХ, КТО обращался. Нашел такую формулу:
{=СУММ(ЕСЛИ(ЧАСТОТА(ЕСЛИ(ДЛСТР(B4:B1  8 )  >0;ПОИСКПОЗ(B4:B18;B4:B18;0);"" )  ;ЕСЛИ(ДЛСТР(B4:B1  8 )  >0;ПОИСКПОЗ(B4:B18;B4:B18;0);"" )  )>0;1))}
но научить её считать в определенный временной период не могу. Из-за особенностей заполнения таблицы даты могут идти не по порядку.
Помогите, пожалуйста!
Изменено: Андрей - 12.01.2013 22:25:19
 
решение с помощью UDF устроит?
или даже и не начинать?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Код
1
=СУММ(--(ПОИСКПОЗ(ЕСЛИ((C4:C18>=F2)*(C4:C18<=G2);B4:B18);ЕСЛИ((C4:C18>=F2)*(C4:C18<=G2);B4:B18);)=A4:A18))-1
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Спасибо!
 
Вот ещё решение с помощью короткой формулы

=СУММПРОИЗВ((C4:C18>=F2)*(C4:C18<=G2))

Если я правильно понял, нужно найти количество всех обратившихся за указанный период.
Таким образом если дата из диапазона C4:C18 попадает в указанный диапазон, значит было обращение.
Считаем количество дат, а следовательно и обращений, независимо от того, кто обращался.
 
Необходимо подсчитать не количество ОБРАЩЕНИЙ, количество ОБРАТИВШИХСЯ. Т.е., если в определенный период от одного было несколько обращений, то в итоге это считается одним событием.
 
формула массива
Код
1
=СУММ(C4:C18>=F2;ЕСЛИ(C4:C18<=G2;ЕСЛИ(ПОИСКПОЗ(B4:B18;B4:B18;0)=(СТРОКА(B4:B18)-3);1)))
 
Sergei_A!
Вы говорили о новом решении!
 
Вот, попробуйте.
 
.... а здесь доработан пример Владимира.
Формула получилась проще чем в предыдущем моём примере.
 
Спасибо! Посмотрю!
 
Sergei_A!
Спасибо! Последний пример - почти то, что искал. Немного метода тыка и готово.
Нужно было подсчитать количество уникальных дат за определенный период.
 
Мне понравилась формула массива у Михаила С., т.к. она цепляет диапазон дат, которыми можно варьировать.
Лично для моей работы она больше подошла, но не смог разобраться как пропускать пустые ячейки, если они случайно попадаются!?
 
Доброго времени суток.

Подскажите, как добавить в приведенные формулы условие, требуется определить кол-во уникальных рабочих в указанный период суток при условии, что операции надо считать по ключу "R", пример прикреплен.

Посмотрел много примеров и постов на форуме, но всегда чего-то не хватает, то диапазон не учитывается, то условия нет.

Пробовал переделать формулу, =СУММПРОИЗВ(((A14:A23=A8)*(B14:B23=B8))/СЧЁТЕСЛИМН(A14:A23;A14:A23;B14:B23;B14:B23;C14:C23;C14:C23)), но получилось что она считает только весь диапазон, а не уникальные значения..(
 
=СЧЁТЗ(УНИК(ФИЛЬТР($A$2:$A$2899;($C$2:$C$2899="R")*($B$2:$B$2899>G13)*($B$2:$B$2899<=H13))))
 
Prosvetov, спасибо, но мой Excel ругается на функцию "ФИЛЬТР", есть только "ФИЛЬТР.XLM" но с ней формула не работает.
 
вариант через сводную
 
не подходит, т.к. это не единственные данные в таблице, остальные вытягиваются также формулами, сводная не сможет это сделать.
 
Цитата
zhuk написал:
это не единственные данные в таблице, остальные вытягиваются также формулами, сводная не сможет это сделать.
Чего?! Это Вы откуда взяли? Сотрите из своей памяти это утверждение :) В PQ + PP можно посчитать все!

Позволю себе исправить вариант Prosvetov:
Вычисляемый столбец (считается просто, так как все промежутки по часу):
Код
1
2
3
4
5
6
7
8
9
Диапазон времени =
VAR sTime =
    TIME ( INT ( data[Время подтверждения] * 24 ); 0; 0 )
VAR eTime = sTime + 1 / 24
VAR result =
    FORMAT ( sTime; "hh:mm:ss" ) & " - "
        & FORMAT ( eTime; "hh:mm:ss" )
RETURN
    result

Мера:
Код
1
Число пользовалелей := DISTINCTCOUNT ( data[Логин] )


P.S. если у Вас что-то считается формулами, то это уже попадет рассчитанное в модель данных при обновлении.
Либо вообще можно убрать формулы и сделать этот же расчет в PP/PQ
P.P.S. Расчет по ключу R можно реализовать как просто поставив фильтр по R, так и модифицировав меру:
Код
1
Число пользовалелей:=CALCULATE ( DISTINCTCOUNT ( data[Логин] ); KEEPFILTERS ( data[Ключ] = "R" ) )

Возможно, модификатор KEPFILTERS и не нужен. Тут уже нужно понимать, что он делает :)
Вернее, что делает запись предикатом data[Ключ] = "R" без этого модификатора.
Если без предиката писать, то понятнее будет:
Код
1
2
3
4
CALCULATE (
    DISTINCTCOUNT ( data[Логин] );
    data[Ключ] = "R"
)

эквивалентно
Код
1
2
3
4
CALCULATE (
    DISTINCTCOUNT ( data[Логин] );
    FILTER ( ALL ( data[Ключ] ); data[Ключ] = "R" )
)
Изменено: surkenny - 22.06.2023 16:16:44
 
Тогда только макросом или обновлять эксель
 
surkenny, согласен с Вами полностью, но сейчас делаю шаблон для ребят со знанием Excel на уровне Ctrl+C, Ctrl+V )), поэтому хотелось бы ограничиться формулами.
 
Цитата
zhuk написал:
поэтому хотелось бы ограничиться формулами.
Код
1
=SUM(SIGN(FREQUENCY(IF(($C$2:$C$2899="R")*($B$2:$B$2899>G2)*($B$2:$B$2899<=H2);MATCH($A$2:$A$2899;$A$2:$A$2899;));ROW($A$2:$A$2899)-1)))
 
memo, спасибо
Страницы: 1
Читают тему
Loading...