Страницы: 1
RSS
подсчитать количество уникальных дат с наличием пустых строк по условию
 
Добрый день! Помогите подсчитать количество уникальных дат в столбце А, по документам в которых присутствует "*VD*".
В файле пробовала вычислить, не получилось.  
 
RMG, Здравствуйте, вариант с доп. столбцом
Изменено: Александр П. - 05.06.2023 07:21:53 (Перезалил файл, забыл про условие с интервалом дат)
 
Этот вариант не подходит, мне нужна формула для проверки всего столбца, а не диапазона.
Постоянно корректировать диапазон это тоже самое, что вручную через фильтр подсчитать.
 
Цитата
Помогите подсчитать количество уникальных дат в столбце А, по документам в которых присутствует "*VD*".
Код
Sub test()
Dim arr
Dim dic As Object
Dim i As Long
Dim iLastRow As Long
  Range("G1") = "Уникальные даты"
  Range("H1") = "Количество ун.дат"
    iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
     Range("G2:H" & iLastRow).ClearContents
     Set dic = CreateObject("Scripting.Dictionary"): dic.comparemode = 1
     arr = Range("A7:B" & iLastRow).Value
  For i = 1 To UBound(arr)
    If InStr(1, arr(i, 2), "VD") <> 0 Then
      dic.Item(arr(i, 1)) = dic.Item(arr(i, 1)) + 1
    End If
  Next i
   Range("G2").Resize(dic.Count, 2) = Application.Transpose(Array(dic.keys, dic.Items))
End Sub
 
Kuzmich добрый день! нисколько не сомневалась, что Вы напишете макрос.
Но в данном случае хотелось бы использовать формулу.
За макрос безумно благодарна!!!
 
датаномер
56
02.05.2023VD-04-01802
05.05.2023VD-04-01801
02.05.2023VD-04-01806
02.05.2023VD-04-01802
02.05.2023VD-04-01801
02.05.2023VD-04-01805
28.04.2023VD-04-01807
Результат который я хотела бы получить это выбрать вначале документы, которые имеют признак "VD", а затем получить количество уникальных дат по этим документам. То есть в данном случае 3
Изменено: RMG - 05.06.2023 13:27:01
 
Смотрите файл
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Максим В. не подходит.  в сообщении #6 я показала, что я фильтром выбрала документы, которые имеют признак "VD", а затем получила количество уникальных дат по этим документам. мне нужна формула которая будет просматривать не диапазон, а весь столбец "А" и весь столбец "В". Соответственно в них будут пустые строки. Менять диапазоны каждый раз нет смысла, быстрее будет отработать фильтром тогда. Об этом я тоже уже писала в сообщении #3.
 
=ЧСТРОК(УНИК(ФИЛЬТР(A:A;ЕЧИСЛО(ПОИСК("VD";B:B)))))
 
Цитата
RMG написал:
Менять диапазоны каждый раз нет смысла
А вы пробовали увеличить диапазоны формуле? Что бы с запасом было.
Изменено: Максим В. - 05.06.2023 14:36:10
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
=СЧЁТ(УНИК(ЕСЛИ(ПОИСК("VD";B:B);A:A)))
Изменено: Бахтиёр - 05.06.2023 14:42:29
 
Бахтиёр
#9 результат 4
#11 результат 2
Правильный результат 3
Изменено: RMG - 05.06.2023 15:25:43
 
Такой у Вас файл (не даты с 9 строки), Бахтиёр делал наверное на файле Максим В.
=СЧЁТ(УНИК(ЕСЛИ(ПОИСК("VD";B:B);--A:A)))
Изменено: Тимофеев - 05.06.2023 15:33:36
 
Тимофеев с Вашей помощью победили!!! Спасибо огромное!!!
Но есть горчинка....
У меня дома офис 2021, а вот на работе офис 10 и функции УНИК нет.
В этом случае есть решение?
 
Еще вам )

=СУММПРОИЗВ(ЕЧИСЛО(ПОИСК(E3;B7:B20))/СЧЁТЕСЛИМН(A7:A20;A7:A20;B7:B20;E3))
 
Если как хочет ТС на все столбцы то формула улетит в безумно долгий пересчёт
 
Павел с Востока в Вашем случае в диапазоне не должно быть пустых строк, т.е. опять следить за границами диапазона.
 
Тимофеев я уже это понимаю, так как уже перепробовала много чего. Тогда остановимся. Ваше решение классное и меня полностью устраивает!
СПАСИБО!
 
Код
=СУММ(--(ЧАСТОТА(
ЕСЛИОШИБКА(--(--ИНДЕКС(A:A;СТРОКА(ДВССЫЛ("1:"&МАКС((A:A<>0)*СТРОКА(A:A);(B:B<>0)*СТРОКА(B:B)))))&
ПОИСК("VD";ИНДЕКС(B:B;СТРОКА(ДВССЫЛ("1:"&МАКС((A:A<>0)*СТРОКА(A:A);(B:B<>0)*СТРОКА(B:B)))))));0);
ЕСЛИОШИБКА(--(--ИНДЕКС(A:A;СТРОКА(ДВССЫЛ("1:"&МАКС((A:A<>0)*СТРОКА(A:A);(B:B<>0)*СТРОКА(B:B)))))&
ПОИСК("VD";ИНДЕКС(B:B;СТРОКА(ДВССЫЛ("1:"&МАКС((A:A<>0)*СТРОКА(A:A);(B:B<>0)*СТРОКА(B:B)))))));0))>0))-1
 
Немассивно:
Код
=COUNT(INDEX(ISNUMBER(SEARCH(E3;B7:B100))/(A7:A100<>"")/(B7:B100<>"")/(MATCH(A7:A100&E3;A7:A100&B7:B100;)=ROW(A7:A100)-ROW(A7)+1);))

Массивно:
Код
=SUM(SIGN(FREQUENCY(IF(ISNUMBER(SEARCH(E3;B7:B100))*(A7:A100<>"")*(B7:B100<>"");MATCH(A7:A100&E3;A7:A100&B7:B100;));ROW(A7:A100)-ROW(A7)+1)))
Страницы: 1
Наверх