Помогите пожалуйста решить задачу. Имеется 2 столбца - дата со временем и логин. В первом столбце за одну дату может быть несколько значений. Необходимо посчитать, общее количество дней для искомого во втором столбце логина. Пример прикладываю ниже.
Здравствуйте, товарищи ).
Помогите пожалуйста решить задачу. Имеется 2 столбца - дата со временем и логин. В первом столбце за одну дату может быть несколько значений. Необходимо посчитать, общее количество дней для искомого во втором столбце логина. Пример прикладываю ниже.Chertyozhnik
Option Explicit Function tt(login As String, BD As Range) As Long Dim arr(), i As Long, dict As Object, d As String If BD.Columns.Count <> 2 Then tt = -1 Exit Function End If If BD.Rows.Count < 2 Then If BD.Cells(1, 2) = login Then tt = 1 Else tt = 0 Exit Function End If arr = BD Set dict = CreateObject("Scripting.Dictionary") With dict For i = 1 To UBound(arr) If arr(i, 2) = login Then d = Format(arr(i, 1), "ddmmyyyy") If Not .exists(d) Then .Add Key:=d, Item:=0 End If End If tt = .Count Next End With End Function
[/vba]
Вариант без массивок :) [vba]
Код
Option Explicit Function tt(login As String, BD As Range) As Long Dim arr(), i As Long, dict As Object, d As String If BD.Columns.Count <> 2 Then tt = -1 Exit Function End If If BD.Rows.Count < 2 Then If BD.Cells(1, 2) = login Then tt = 1 Else tt = 0 Exit Function End If arr = BD Set dict = CreateObject("Scripting.Dictionary") With dict For i = 1 To UBound(arr) If arr(i, 2) = login Then d = Format(arr(i, 1), "ddmmyyyy") If Not .exists(d) Then .Add Key:=d, Item:=0 End If End If tt = .Count Next End With End Function