2

У меня есть лист Excel с 7895 строк, 6 столбцов в столбце BI имеют такие значения, как:

Classification 124: Item 1 (€2345,70) item 2 (€123) item 3 (€1456,75)

Я пытаюсь создать формулу или функцию с суммой 2345,70+123+1456,75.

Я нашел что-то вроде этого:

Function SumNums(rngS As Range, Optional strDelim As String = " ") As Double
    Dim vNums As Variant, lngNum As Long
    vNums = Split(rngS, strDelim)
    For lngNum = LBound(vNums) To UBound(vNums) Step 1
        SumNums = SumNums + Val(vNums(lngNum))
    Next lngNum
End Function

Я пытался использовать эту процедуру, но она не работает в моем конкретном случае. Я должен найти способ, чтобы добавленные числа были такими (€ 2345,70) с круглыми скобками и знаком евро. Но опять же, числа имеют знак евро, но они не отформатированы как валюта.

1 ответ1

1

Попробуйте следующую формулу (добавьте это в модуль в редакторе VBA - Alt + F11)

Function SumAllCurrencies(CellsToSum)
    Dim regexPattern: regexPattern = "€(\d*),?(\d*)?"
    Dim objRegex: Set objRegex = CreateObject("vbscript.regexp")
    With objRegex
        .Global = True
        .Pattern = regexPattern
    End With
    Dim regexMatches: Set regexMatches = objRegex.Execute(CellsToSum.Value)
    Dim regexMatch

    Dim sumValue: sumValue = 0
    For Each regexMatch In regexMatches
        sumValue = sumValue + regexMatch.SubMatches.Item(0)
        If (IsNumeric(regexMatch.SubMatches.Item(1))) Then
            sumValue = sumValue + (regexMatch.SubMatches.Item(1) / 100)
        End If
    Next

    SumAllCurrencies = sumValue

    Set regexMatch = Nothing
    Set objRegex = Nothing
    Set regexMatches = Nothing
End Function

Затем просто вызовите его с помощью =SumAllCurrencies(A1)

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

Надеюсь это поможет!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .