
Ich möchte eine „Zwischensumme“ einer Tabelle erstellen, wobei die Zwischensummenfunktion eine Zeichenfolgenverkettung und keine numerische Funktion (Anzahl, Summe, Durchschnitt) ist.
Betrachten Sie beispielsweise diese Tabelle:
Ich möchte folgendes Ergebnis:
Für mich sieht das so aus, als ob "Concat" (oder "Join") über die Zwischensummenbildung gestellt wurde. Aber ich glaube nicht, dass Excel wirklich funktionale Programmierung versteht (egal, was manche Leute behauptet haben). Wie kann ich das also machen (insbesondere, wie kann ich das machen, indem ich das Menüelement Zwischensumme nutze, das alle Zwischensummenformeln automatisch einfügt, selbst wenn ich die Formeln anschließend bearbeiten muss, damit das gewünschte Ergebnis funktioniert).
Und tatsächlich ist Excel sehr leistungsstark und bietet Unmengen an Funktionen. Kann ich dies also auf eine andere Weise als durch die Berechnung von Zwischensummen erreichen? (Ich würde Lösungen ohne Skripting bevorzugen.)
Und außerdem ist Excel nicht das einzige Tool im Werkzeugkasten. Angenommen, ich hätte diese Tabelle in einer CSV-Datei. Gibt es eine Möglichkeit, dies mit Standard-Unix-Dienstprogrammen zu tun (z. B. cut
? awk
Könnte vermutlich damit umgehen, wie würde das aussehen)?
Antwort1
Dies ist vielleicht nicht die eleganteste Lösung, aber versuchen Sie es mit Folgendem, da die Sortierung von Col1 garantiert ist:
Fügen Sie eine Spalte (C) hinzu, um die kumulierten Verkettungen der Werte von Spalte 2 aufzunehmen. Die Formel für Zelle C2 lautet
=IF(A2=A1, CONCATENATE(C1, ",", B2), B2)
und Sie können diese für die restlichen Zellen automatisch ausfüllen.Fügen Sie eine Spalte (D) hinzu, um die Zeilen mit der maximalen (längsten) Verkettung zu kennzeichnen, also die letzte Zeile jedes Werts in Spalte 1. Die Formel für Zelle D2 lautet
=IF(A2<>A3, TRUE, FALSE)
und Sie können die restlichen Zellen automatisch ausfüllen.Die Tabelle sieht folgendermaßen aus:
Filtern Sie die Tabelle nach
TRUE
Werten in Spalte D:Sie können nun die Spalten B und D ausblenden: