Option Explicit
Function AAA(source)
Dim str$, match As Object, Arr
Dim iCount&, i&
str = CStr(source)
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = ":\s*(\d{2}/\d{2}/\d{4}).+(\d+)"
If .test(str) Then
Set match = .Execute(str)
iCount = match.Count
ReDim Arr(1 To iCount, 1 To 2)
For i = 1 To iCount
With match(i - 1)
Arr(i, 1) = .subMatches(0)
Arr(i, 2) = CDbl(.subMatches(1))
End With
Next
End If
End With
AAA = Arr
End Function
'=====================================================
Function BBB(data, Criteria As Range)
Dim str$, crt
Dim Arr, result, rng As Range, j&, i&
str = CStr(data)
Arr = AAA(str)
If IsArray(Arr) Then
ReDim Preserve Arr(1 To UBound(Arr, 1), 1 To 3)
If Criteria.Cells.Count > 1 Then
ReDim result(1 To Criteria.Cells.Count)
For Each rng In Criteria
j = j + 1
For i = 1 To UBound(Arr, 1)
If CDate(Arr(i, 1)) < CDate(rng) Then
If Arr(i, 3) = 0 Then
result(j) = result(j) + Arr(i, 2)
Arr(i, 3) = 1
End If
End If
Next
Next
Else
For i = 1 To UBound(Arr, 1)
If CDate(Arr(i, 1)) < CDate(Criteria) Then result = result + Arr(i, 2)
Next
End If
End If
BBB = result
End Function