Extrahiere und SUM-Nummern aus einer Zeichenfolge

341
PeterH

Ich habe mir ähnliche Fragen dazu angeschaut, konnte aber keine exakte Lösung für mein Problem finden. Wenn es ein Duplikat gibt, das dieses Problem lösen kann, werde ich diese Frage schließen.

In Zelle A1 könnte ich eine Zeichenfolge haben, die immer aus einer Zahl, einem Komma, einer Nummer usw. besteht.

Es kann mehrere Nummern geben, immer durch Komma getrennt.

Zum Beispiel:

12,12,10,10 

oder

12,12,1 

In Zelle B1 würde ich gerne die Zahlen summieren, also würde ich ein Ergebnis von 44oder erhalten 25.

Wie kann ich das erreichen?

Das Einzige, was ich mir vorstellen konnte, war die Verwendung von Text to Columns, aber dies macht die Struktur der Arbeitsmappe irgendwie durcheinander, da mehr Spalten verwendet werden müssen. Ich hoffte auf eine Formel, die ich einfach in B1 eingeben und wenn möglich nach unten ziehen konnte.

1
Verwenden Sie eine einfache benutzerdefinierte Funktion. Teilen Sie Ihren Textwert durch ein Komma-Delemeter in ein String-Array und berechnen Sie die Summe der in Zahlen konvertierten Array-Elemente. Akina vor 5 Jahren 0
Ich habe keine Ahnung, wie ich damit anfangen soll PeterH vor 5 Jahren 0

3 Antworten auf die Frage

2
Scott Craner

Dies kann mit einer Formel erfolgen:

=SUMPRODUCT(--TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW($A$1:INDEX(A:A,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*99+1,99))) 

Dies teilt sich auf ,und iteriert die Teile und summiert sie.

das ist beeindruckend PeterH vor 5 Jahren 0
1
Akina

Ich habe keine Ahnung, wie ich damit anfangen soll

  • Öffnen Sie Ihre Excel-Datei.
  • Drücken Sie Alt-F11, um das VBA-Editor-Fenster zu öffnen.
  • Wählen Sie im Menü Insert-Module aus, neue Modulfenster werden geöffnet.
  • Fügen Sie den folgenden Code in das Modulfenster ein:

    Public Function ParseAndSum(source As String) As Integer Dim tmp() As String, i As Integer tmp = Split(source, ",") For i = LBound(tmp) To UBound(tmp) ParseAndSum = ParseAndSum + Val(tmp(i)) Next i End Function 
  • Schließen Sie den VBA-Editor.

  • Wählen Sie die Zielzelle (zum Beispiel B1).
  • Drücken Sie den Funktionsknopf (fx), das Function Master-Fenster wird geöffnet.
  • Wählen Sie die Kategorie "Benutzerdefinierte Funktionen" aus, wählen Sie die Funktion ParseAndSum aus und klicken Sie auf Weiter.
  • Klicken Sie auf Quellzelle (A1). Die Adresse wird in das Feld "Quelle" eingefügt.
  • OK klicken.

Das ist alles.

PS. Vergessen Sie nicht, die Ausführung von Makros in den Excel-Einstellungen zu aktivieren.

Danke dir ! Ich werde versuchen, daraus zu lernen, wie ich anfange, UDFs für mich selbst zu erstellen PeterH vor 5 Jahren 0
@PeterH Denken Sie daran, dass die Funktion nur in dieser Datei verfügbar ist. Um es in einer anderen Datei zu verwenden, müssen Sie auch alle anderen Dateien in einer anderen Datei ausführen. Akina vor 5 Jahren 0
0
Roy

Eine andere Art und Weise, wie dies herkömmlich beantwortet wird, ist die Verwendung eines Befehls aus dem "alten" Excel 4-Makrosatz.

Sie MÜSSEN diese Befehle in benannten Bereichen (oder auch Makros) verwenden. Normalerweise suchen die Leute jedoch nach einer Lösung ohne Makros.

Diese Lösung hat zwei Aspekte. Der erste ist, wie man die Grundlagen macht:

(Ihre Daten befinden sich in Zelle A1, und Ihr Ergebnis würde sich in der gewünschten Zelle in B1 befinden.)

Richten Sie einen benannten Bereich ein (möglicherweise als "Ergebnis" bezeichnet). Gib es die Formel:

=EVALUATE(SUBSTITUTE(A1,",","+")) 

Verwenden Sie dann den benannten Bereich in der Formel in Zelle B1: = Ergebnis

In der Formel wird SUBSTITUTE () "normal" verwendet, um die Kommas für die Pluszeichen zu ändern, die für die Funktion von EVALUATE () erforderlich sind. EVALUATE () ist der Excel 4-Makrobefehl, der genau das tut: alles auswerten, was es als Formel erkennt (deshalb müssen die Kommas ersetzt werden).

Der Grund, warum es in einer Named Range verwendet werden muss, ist etwas mysteriös. Sie funktionieren nicht direkt in die Zellen der Tabelle. Sie werden in echten Makros arbeiten. Der Gedanke wäre also, dass Named Ranges von Excel als eine Version (eine "Lite-Version", um sicherzugehen) von Makros betrachtet werden muss, deren Arbeit von der Makro-Engine ausgeführt wird, nicht als Blattberechnungs-Engine.

Der zweite Aspekt ist, wie man die Formel dazu bringt, sich auf "die Zelle unmittelbar links von der Zelle zu beziehen, in der ich das Ergebnis haben möchte" ...

Markieren Sie Zelle A2 und geben Sie die Formel wie oben ein. Geben Sie die Formel ein (Kopieren und Einfügen, geben Sie, wie Sie möchten) und speichern Sie sie. Überprüfen Sie die Formel, nachdem der benannte Bereich festgelegt wurde, und stellen Sie sicher, dass für die Zellenreferenz kein "$" vorhanden ist (Sie möchten "A1", NICHT eine Version von "$ A $ 1").

Alles bereit. Jetzt, wo sich in Ihrem Arbeitsblatt befindet, bezieht sich das "= Ergebnis" auf die Zelle, die sich unmittelbar links befindet. Kopieren Sie es in die B-Spalte oder was auch immer nützlich sein könnte, und es wirkt sich auf die Zelle links vom Inhalt aus.

Sie müssen den zweiten Teil richtig machen, aber es ist einfach, oder?

Suchen Sie nach Excel 4-Makrobefehlen, und Sie werden das gesamte Handbuch zur Verfügung haben, etwa 600 Seiten davon. Hier befinden sich einige Juwelen, obwohl uns einige davon in den letzten Jahren in neuen Funktionen zur Verfügung gestellt wurden.