Komplexe Summierung von Werten in einer Zelle

Komplexe Summierung von Werten in einer Zelle

Angenommen, ich habe ein Formelergebnis, das dies +10+5+1+40als Text zurückgibt. Ich möchte diese Zahlen dann summieren, um die Gesamtsumme zu erhalten.

Das Ergebnis kann eine beliebige Anzahl von Werten sein, also etwa +2+5oder +10+5+7+1+8.

Falls es hilfreich ist, sieht der ursprüngliche Datensatz in etwa so aus S10_S5_S1_S40oder so E_E_S2_S5. Ich habe alles entfernt, außer den Zahlen neben S, die ich hinzufügen möchte.

Schließlich poste ich als Superuser, da ich VBA wenn möglich vermeiden möchte.

Aktualisieren

Durch diese Formel: =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(D25,"E",""),"_",""),"S","=",1),"S","+")

Ich habe es darauf reduziert =10+5+1+40, wobei D25 = S10_S5_S1_S40... aber das ist wohl dasselbe +, wie wenn ein davor wäre!

Antwort1

Angenommen, Sie haben nur 1- oder 2-stellige Zahlen wie in Ihren Beispielen, dann summiert diese „Array-Formel“ alle „S“-Zahlen von D25

=SUM(IF(MID(D25,ROW(INDIRECT("1:"&LEN(D25))),1)="S",(0&SUBSTITUTE(MID(D25,ROW(INDIRECT("1:"&LEN(D25)))+1,2),"_",""))+0))

bestätigt mitCTRL+SHIFT+ENTER

Wenn also D25 enthält S10_S5_S1_S40, erhalten Sie das Ergebnis 56

Antwort2

Es gibt keine Arbeitsblattformel, die das tut. Sie können die alte Excel 4-Makrofunktion EVALUATE() verwenden, diese kann jedoch nur in einem benannten Bereich verwendet werden.

Wenn Sie also Daten in Spalte D haben und die Ersatzformel beispielsweise in Spalte E, wählen Sie F25 und erstellen Sie mit dem Namensmanager eine neue benannte Formel. Geben Sie ihr den Namen "EvaluateMe" und lassen Sie sie auf

=EVALUATE(Sheet1!E25)

Geben Sie dann

=EvaluateMe 

in Zelle F25 und das Ergebnis wird angezeigt. Dieser benannte Bereich verwendet eine relative Referenz und wenn sich die aktive Zelle bei der Definition in F25 befand, wird immer versucht, die Zelle direkt links auszuwerten.

Antwort3

Dies ergibt sich aus Barrys „großartiger“ Antwort. Die folgende „Array-Formel“

=SUM(IF(MID(D25,ROW(INDIRECT("1:"&LEN(D25))),1)="S",MID(D25,ROW(INDIRECT("1:"&LEN(D25)))+1,IFERROR(FIND("_",D25,ROW(INDIRECT("1:"&LEN(D25)))+1),LEN(D25)+1)-(ROW(INDIRECT("1:"&LEN(D25)))+1))+0))

(eingegeben mit Ctrl+ Shift+ Enter) addiert alle „S“-Zahlen in der Zelle D25, unabhängig von der Länge; wenn also D25„S10_S5_S1_S240“ enthält, ergibt die obige Formel das Ergebnis 256. Auch negative Zahlen lassen sich verarbeiten: „S10_S5_S–1_S240“ ergibt 254.

Ich habe das nicht ausführlich getestet. Wahrscheinlich werde ich Montagmorgen selbst einen Fehler daran finden. :)

verwandte Informationen