
Ich habe Daten in einer Zelle wie:
Gute Antwort -6, RNR -2, Keine Stimme -1
Ich muss nur die Summe der Zahlen in der Zelle ermitteln. Wie kann ich das in einer einzigen Formel tun?
Antwort1
Ich benutze ExcelRegEx Suchen/Ersetzen-Add-In, fügt es Excel die Funktionalität regulärer Ausdrücke hinzu.
(Ich bin in keiner Weise mit diesem Add-In verbunden, sondern nur ein begeisterter Benutzer.)
Hier können Sie eine Formel wie diese verwenden, um alle Zahlen zu finden und zu summieren:
=SUM(RegExFind(A1,"\d+"))
Oder um auch negative Werte zu berücksichtigen:
=SUM(RegExFind(A1,"[-\d]+"))
Antwort2
Basierend auf den bereitgestellten Informationen und unter der Annahme, dass immer nur 3 Werte extrahiert werden und jeder 1 Ziffer lang ist, funktioniert das Folgende für eine Zeichenfolge inA2:
=LEFT(SUMPRODUCT(MID(0&A2,LARGE(INDEX(ISNUMBER(--MID(A2,ROW($1:$25),1))* ROW($1:$25),0),ROW($1:$25))+1,1)*10^ROW($1:$25)/10),1)+RIGHT(SUMPRODUCT(MID(0&A2,LARGE(INDEX(ISNUMBER(--MID(A2,ROW($1:$25),1))* ROW($1:$25),0),ROW($1:$25))+1,1)*10^ROW($1:$25)/10),1)+RIGHT(A2,1)
Natürlich habe ich hier einige Annahmen getroffen,
Wenn dies nicht funktioniert, erklären Sie mir genauer, wie Ihre Daten strukturiert sind usw. und ich werde versuchen, es zu ändern.
Antwort3
Wenn Ihre Daten wirklich so sind, wie Sie sie angeben, also der Zahl ein vorangestellt ist <space>
und ein oder das Ende der Zeichenfolge folgt <comma>
, können Sie Folgendes verwenden.
Definieren Sie eine Formel und benennen Sie seq_99
sie
seq_99 refers to: =IF(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))=1,1,(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))-1)*99)
Dann können Sie dies verwendenArray-EintragFormel:
=SUM(IF(ISNUMBER(--TRIM(MID(SUBSTITUTE(TRIM(SUBSTITUTE(A1,","," "))," ",REPT(" ",99)),seq_99,99))),--TRIM(MID(SUBSTITUTE(TRIM(SUBSTITUTE(A1,","," "))," ",REPT(" ",99)),seq_99,99))))
ZuArray-EingabectrlHalten Sie zum Umwandeln einer Formel die Taste + gedrückt, shiftwährend Sie drücken enter. Wenn Sie dies richtig machen, setzt Excel Klammern {...}
um die Formel, die Sie in der Formelleiste sehen können.
Ich bin davon ausgegangen, dass -
es sich um eine negative Zahl handelt. Wenn das nicht der Fall ist, ist es ganz einfach, die Formel zu ändern, um sie auszuschließen.
Antwort4
Ich möchte eine kleine VBA-Funktion vorschlagen. Beachten Sie, dass das Trennzeichen wie unten gezeigt angepasst werden kann.
Function SumNumbers(rngS As Range, Optional strDelim As String = "-") As Double
Dim xNums As Variant, lngNum As Long
xNums = Split(rngS, strDelim)
For lngNum = LBound(xNums) To UBound(xNums) Step 1
SumNumbers = SumNumbers + Val(xNums(lngNum))
Next lngNum
End Function
Anmerkungen:
- Verwenden Sie diese Funktion wie gewohnt:=SummeZahlen(Zellenadresse).
- Wenn das Trennzeichen SPACE ist, verwenden SiestrDelim As String = " "in der Argumentliste.
- Wenn das Trennzeichen KOMMA ist, verwenden SiestrDelim als String = ","in der Argumentliste.
Ich hoffe das hilft dir.