Для финансового моделирования мы часто сталкиваемся с проблемой, что нам нужно проверять массив формул на согласованность (то есть никто не помещал жестко закодированные значения в массив формул или скорректированную формулу для определенных периодов). Использование функций массива не является приемлемым в нашей рабочей среде.
Я попытался придумать пользовательскую функцию, которая проверяла бы согласованность. Однако он очень медленный и делает невозможной работу в финансовой модели на 1-2 тысячи строк из-за задержки.
Не могли бы вы помочь мне с идеями, как эффективно проверить согласованность или выделить недостатки в моем коде?
Public Function isConsistent(ByRef range_to_check As Range, Optional ByVal R1C1 As Boolean = False)
'
' Check if all formulae in range_to_check are consistent
' To check R1C1 formula, pass True as second parameter
'
'
' Get array of formulas: either normal formula or R1C1 depending on inputs
If R1C1 = True Then
formulae = range_to_check.FormulaR1C1
Else
formulae = range_to_check.Formula
End If
' Check every formula in array
' If at least one formula in array does not match, return False
If IsArray(formulae) Then
firstFormula = formulae(1, 1)
For Each f In formulae
If f <> firstFormula Then
isConsistent = False
Exit Function
End If
Next f
End If
' If test passed, return True
isConsistent = True
End Function