Эффективный UDF для проверки согласованности формул в Excel - PullRequest
0 голосов
/ 08 ноября 2018

Для финансового моделирования мы часто сталкиваемся с проблемой, что нам нужно проверять массив формул на согласованность (то есть никто не помещал жестко закодированные значения в массив формул или скорректированную формулу для определенных периодов). Использование функций массива не является приемлемым в нашей рабочей среде.

Я попытался придумать пользовательскую функцию, которая проверяла бы согласованность. Однако он очень медленный и делает невозможной работу в финансовой модели на 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
...