Frage von Nebelsturm, 60

Wie kann ich Excel Tabelle umsortieren/ einzelne Inhalte zusammenfassen?

Letzte Frage für heute,

wie bekomme ich alle Daten aus Spalte "G" in die Spalten "J", "K", "L" und "M" sortiert? Siehe das Bild im Anhang. Das nötige Kriterium für die Sortierung steht in Spalte "H".

Es muss aber noch ein "Notfall" Kriterium eingeführt werden. Nämlich, wenn kein, oder ein falsches/nicht verwendetes Kriterium eingetragen ist. Dies äußert sich als "0", wenn nichts eingetragen ist.

Vielen Dank

Expertenantwort
von Ninombre, Community-Experte für Excel, 17

Es wäre unterm Stich einfacher, wenn Du das Gesamtpaket mit den Anforderungen direkt auf den Tisch legst, statt häppchenweise die Latte höherzulegen. Vielleicht hätte sich dann ein Makro einfacher gestaltet

Zum Thema Suchergebnisse sortieren kann man sich von dieser Seite was abschauen:http://excelformeln.de/formeln.html?welcher=28

Es ist eine Matrixformel, daher nach dem Eingaben die Zelle mit STRG+Shift+Enter verlassen (dann entstehen noch geschwungene Klammern um die Formel)

=WENN(ZEILEN($1:1)>ZÄHLENWENN(H:H;1);"";INDEX(G:G;KKLEINSTE(WENN(H$2:H$99=1;ZEILE($2:$99));ZEILE(A1))))

Die fett markierten Zahlen musst Du für die Kategorien 2-4 entsprechend anpassen.

Kommentar von Nebelsturm ,

Tut mir leid, ich dachte jedes Mal ich könne mir einen Ratschlag und keine vollständige Lösung holen, um das dann allein zu lösen. Leider habe ich mich da überschätzt und nach und nach einsehen müssen, dass ich es allein auch mit Anschubbser nicht schaffe.

Deshalb die stückchenhaften Fragen. Manchmal war mir gar nicht bewusst, dass es Folgeprobleme geben wird. Okay... immer :)

Danke für die Formel, aber irgendwie kann ich sie nicht nach unten erweitern (#ZAHL!) und es kommt IMMER -K1:1 in die oberste Zelle, selbst wenn ich das Kriterium ändere.

Kommentar von Ninombre ,

kein Problem! Im Grund ist es ja der richtige Weg, um es auch zu verstehen. Ich dachte nur, dass Du Dich sonst unnötig mit unpassenden Ansätzen herumschlägst, wenn das Gesamtbild unklar ist.

Ich würde es ehrlich gesagt einfach per Makro lösen, denn die Formeln oben werden wackelig.

Kennst Du Dich soweit aus, wie man das Makro in der Datei ablegt und startet?

Muss man außer leer oder 0 auch damit rechnen, dass 4,2 oder ähnliches im Sortierkriterium steht? Ich frage momentan nur ab ob zwischen 1 und 4

Was Du noch überlegen kannst bzw. was besser passt, ob das Makro die sortieren Einträge überschreiben soll, wenn man es neu startet oder die neuen Einträge unten anhängt. Im Augenblick fügt es die Einträge immer ans Ende dazu.

Brauchst Du die Zwischenspalte eigentlich noch, also den "Reißverschluss" oder reicht es, wenn es direkt sortiert wird?

Sub sortieren()
For i = 2 To 100 'entsprechend anpassen wieviele Zeilen zu bearbeiten sind
If Cells(i, 1).Value >= 1 And Cells(i, 1).Value <= 4 Then
Cells((Cells(Rows.Count, Cells(i, 1).Value + 9).End(xlUp).Row + 1), Cells(i, 1).Value + 9).Value = Cells(i, 2).Value & Cells(i, 3).Value
Cells((Cells(Rows.Count, Cells(i, 1).Value + 9).End(xlUp).Row + 1), Cells(i, 1).Value + 9).Value = Cells(i, 4).Value & Cells(i, 5).Value
Else:
Cells((Cells(Rows.Count, 14).End(xlUp).Row + 1), 14).Value = Cells(i, 2).Value & Cells(i, 3).Value
Cells((Cells(Rows.Count, 14).End(xlUp).Row + 1), 14).Value = Cells(i, 4).Value & Cells(i, 5).Value
End If
Next
End Sub
Kommentar von Ninombre ,

Das hatte ich gestern vergessen, falls Du es nachvollziehen willst:

for-next ist eine Schleife, bei der eine Variable (i) hochgezählt wird und die durchlaufen wird, bis i eben den Endwert erreicht hat

Zellen steuert man über eine Adresse an, allerdings Spalte / Zeile in anderer Reihenfolge als bei normalen Formeln:
cells(Zeile, Spalte)
cells(y,x).value ist der Wert der Zelle (man könnte auch die Farbe oder die Formel etc. abfragen)

über die Funktion cells(rows.count, 14).end(xlup).row ermittelt man die letzte verwendete Zeile je Spalte (hier für Spalte 14). Das +1 ist die erste freie Zeile, in die man schreiben kann.

If then ist im Grunde die  Wenn-Formel, Aufbau etwas anders. Wenn der Zellwert Spalte A, Zeile i >=1 und <=4 ist wird die then-Bedingung ausgeführt, sonst die else

Was jetzt etwas unübersichtlich aussieht ist das cells(cells... Geschachtel:
Da geht es um die Ermittlung von x und y Koordinate, wohin ein Ergebnis zu schreiben ist. Steht in der Suchkategorie ein Wert 1 - 4 wird damit entsprechend weit nach "rechts" gegangen: Wert aus Spalte A + 9 ergibt Spalte J - M. Ist eine andere Suchkategorie hinterlegt, wird fest in Spalte 14 (N) geschrieben.

Um über rows.count zu ermitteln, in welche Zeile geschrieben wird, braucht man die Spalte, wo zu suchen ist. Also die Logik mit dem "nach rechts" gehen auch an dieser Stelle hinterlegen: So werden die drei Elemente geschachtelt:

cells( Zeile, Spalte).value = (Zielzelle)
Zeile: rows.count (Spalte)
Spalte: Wert cells(i,1)+9

Beim else-Zweig sieht es man es etwas besser, da die Spalte mit 14 fest belegt ist: das fette ist die Zeile, die ",14" die Spalte

Cells((Cells(Rows.Count, 14).End(xlUp).Row + 1), 14)

In die so ermittelte Zelle wird dann der Inhalt von Quelle1/Quelle2 der jeweiligen Zeile geschrieben. Die nächste Zeile im Code, die bis auf zwei Zahlen identisch ist, schreibt nach der gleichen Logik Ziel1/Ziel2

und die Schleife wird wiederholt und die nächste Zeile geschrieben.l

Antwort
von eztark, 18

Spalte anklicken >  Strg + X  (zum Ausschneiden) > dann in die Spalte klicken wo es hin soll > Strg + V (zum Einfügen)

Kommentar von Nebelsturm ,

Danke. Ich hätte wohl "automatisch" dazu schreiben sollen. Außerdem "selektiv". Ich will nicht alles in eine andere Spalte setzen, nur das, was dem Kriterium entspricht.

Kommentar von eztark ,

funktioniert aber genauso.. nur dass du dann die entsprechenden Zellen anklickst bevor du sie ausschneidest.

Kommentar von Nebelsturm ,

Danke, ja das stimmt. Jedoch ist das absolut manuell und nicht automatisch, ich muss auf diesem Weg jeden Eintrag selbst "anfassen" und übertragen, statt ihn am Ziel per Formel automatisch erscheinen zu lassen. Bitte verzeih, ich hätte mich genauer ausdrücken sollen.

Keine passende Antwort gefunden?

Fragen Sie die Community