Hinzufügen von Werten zu Text in einer Excel-Zelle

2

Ich habe eine Excel-Tabelle mit 7895 Zeilen, 6 Spalten in Spalte BI haben Werte wie:

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

Ich versuche, eine Formel oder Funktion zu erstellen, die 2345,70 + 123 + 1456,75 summiert.

Ich habe so etwas gefunden:

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

Ich habe versucht, diese Routine zu verwenden, aber sie funktioniert in meinem speziellen Fall nicht. Ich muss einen Weg finden, wie die hinzugefügten Zahlen (€ 2345,70) mit der Klammer und dem Euro-Zeichen sind. Aber auch hier haben die Zahlen ein Euro-Zeichen, aber sie sind nicht als Währung formatiert.

Emanuel
quelle
Wir sind kein Script Writing Service. Wir erwarten von den Benutzern, dass sie uns mitteilen, was sie bisher versucht haben (einschließlich der von ihnen verwendeten Skripte) und wo sie hängengeblieben sind, damit wir bei bestimmten Problemen helfen können. Fragen, bei denen nur Skripte angefordert werden, sind zu weit gefasst und werden wahrscheinlich zurückgestellt oder geschlossen . Bitte lesen Sie Wie stelle ich eine gute Frage? .
DavidPostill
Funktion SumNums (rngS As Range, Optional strDelim As String = "") As Double Dim vNums As Variant, lngNum As Long vNums = Split (rngS, strDelim) Für lngNum = LBound (vNums) To UBound (vNums) + Val (vNums (lngNum)) Nächste lngNum End Function Ii funktioniert nicht
Emanuel
Bitte bearbeiten Sie Ihre Frage, um zusätzliche Informationen hinzuzufügen. Code ist in Kommentaren nicht lesbar.
DavidPostill

Antworten:

1

Probieren Sie die folgende Formel aus (Fügen Sie diese zu einem Modul im VBA-Editor hinzu - 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

Dann rufen Sie einfach mit an =SumAllCurrencies(A1)

Bildbeschreibung hier eingeben

Dies funktioniert, indem Sie nach einem € -Zeichen alle Ziffern und nach einem Komma alle optionalen Ziffern neu ausgeben. Es addiert dann alle Zahlen direkt nach dem € -Zeichen und die Zahlen nach dem Komma, geteilt durch 100 (um sie als Cent anstelle von Euro zu behandeln).

Hoffe das hilft!

Jonno
quelle
Das war unglaublich schnell und es funktioniert! Es hilft, es hilft sehr! Danke vielmals.
Emanuel