Привет (прошу прощения за плохое форматирование и условности, я не кодер)
У меня есть функция VBA
, которая вычисляет средневзвешенное время с учетом таблицы дат и значений . Проблема в том, что я не могу передать итератор через одну из функций Excel.
Проблема возникает в следующей строке:
totalWeighting = totalWeighting + Cells(Application.Match(start_date, dateRange, 1), userCodeColumn)
При использовании start_date
функция работает нормально (обратите внимание, что у меня есть куча другого кода для Dim variables
, который я исключил). Однако, когда вы заменяете start_date
на «d», возвращается #value
.
Function TimeWeightedAverage(start_date As Date, end_date As Date, user_code) As Double
Dim d As Date
Dim totalWeighting As Double
Dim userCodeColumn As Integer
Dim dateRange As Range
Dim denominator As Integer
Dim startRow As Integer
If Mid(user_code, 3, 1) = 2 Then
Set dateRange = ActiveSheet.Range("A:A")
Else
Set dateRange = ActiveSheet.Range("H:H")
End If
totalWeighting = 0
denominator = WorksheetFunction.NetworkDays(start_date, end_date)
Let userCodeColumn = user_code.Column
Let startRow = Application.Match(start_date, dateRange, 1)
For d = start_date To end_date
If WorksheetFunction.Weekday(d, 11) < 6 Then
totalWeighting = totalWeighting + Cells(Application.Match(d, dateRange, 1), userCodeColumn)
End If
Next
TimeWeightedAverage = totalWeighting / denominator
Любые мысли будут с благодарностью.
Данные:
![data](https://i.stack.imgur.com/pIrnA.png)