Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

dyn. Tabelle in 2tes Sheet sortiert

dyn. Tabelle in 2tes Sheet sortiert
26.10.2021 10:30:10
Beni
Hallo liebe Leute
Ich habe aus meiner UserForm eine unsortierte Tabelle mit vielen Spalten (bereits Zahlenwerte) sowie zwei Typenbezeichnungen (Spalte A + B - Gruppe resp. Stadtname). Diese Zahlen möchte ich nun in mein Berechnungssheet rüber-referenzieren (transponieren, ich möchte dort eine Spalte pro Stadt nicht eine Zeile), damit ich diese dort weiterverarbeiten kann. Das ganze soll natürlich dynamisch sein, da die Ausgangstabelle ständig wächst..
Normalerweise mache ich das mit SVERWEIS oder INDEX/VERGLEICH, um die Zahlenwerte entsprechend der Stadt zu referenzieren, nur geht das hier m.M.n. nicht, da ich die Reihenfolge der Zeilen (neu dann Spalten) eben auch gleich ändern möchte - und zwar zuerst alle Städte aus Gruppe A auflisten (darin alphabetisch sortiert), dann Gruppe B etc. (Total 4 Gruppen).
Das heisst, ich weiss nicht wie viele Spalten es pro Gruppe gibt (geben wird)..was sich nach Schlaufe mit Range(Länge der Liste) anhört oder? Am liebsten wächst die neue Berechnungstabelle automatisch anhand der Ausgangstabelle (aus UserForm).. v.a. muss ich ja die Gruppen / Städte irgendwie dynamisch sortieren und referenzieren können, die Zahlenwerte mache ich am besten weiterhin mit INDEX etc..
Am liebsten würde ich das ohne VBA machen, und benötige dazu bloss einen kleinen Schupps in die richtige Richtung. Aber evt. ists ohne VBA gar nicht möglich, dann müsste der Schubs etwas grösser ausfallen :)
Danke euch!

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Beispieldatei
26.10.2021 11:08:29
ChrisL
Hi
Vielleicht mal eine kleine Bespieldatei mit Ist- und Soll-Zustand hochladen. (gerne als xlsx ohne Makros)
cu
Chris
AW: dyn. Tabelle in 2tes Sheet sortiert
26.10.2021 16:48:57
Alwin
Hallo Beni,
Du hast doch Labels für die Spaltenüberschriften. Nehme das Klickereignis des jeweiligen Labels wo du den Sortiervorgang möchtest und schreibe den Inhalt der Listbox in das 2. Tabellenblatt deiner 2. Tabelle. Danach sortierst du einfach in der Spalte.
Ich hab’s gleich in die Datei geschrieben, da es sich um Arraykram handelt. Bei großen Erfordernissen sollte man sich doch anders Gedanken drum machen.
https://www.herber.de/bbs/user/148808.xlsm
Gruß Uwe
Anzeige
AW: dyn. Tabelle in 2tes Sheet sortiert
26.10.2021 17:39:35
Alwin
Ich hatte noch einen kleinen Fehler drin. Tausche die Prozedur noch aus:

Private Sub TabZweischreiben()
Dim i As Long, j As Long, lz As Long
arrSort = Tabelle5.ListObjects("Tbl_Kosten").DataBodyRange.Value
With Tabelle1
If .ListObjects("Tbl_Ergebnis").ListRows.Count >= 1 Then
.ListObjects("Tbl_Ergebnis").DataBodyRange.Delete
End If
For i = 0 To UBound(arrSort, 1) - 1
For j = 1 To UBound(arrSort, 2)
.Cells(i + 2, j) = arrSort(i + 1, j)
Next j
Next i
End With
End Sub
Gruß Uwe
AW: dyn. Tabelle in 2tes Sheet sortiert
27.10.2021 00:07:29
Beni
Hi Uwe
Danke auch für dieses Script. Es funktioniert leider noch nicht richtig resp. mir sind einige Dinge noch unklar:
- Die Tabellen (def. Namen) werden im Script definiert oder im Excel? Kann die nirgends anpassen...außerdem wächst die neu sortierte Tabelle jetzt nicht mehr, wenn ich neue Einträge erstelle oder Daten anpassen (also nicht mehr dynamisch).
- Habe die Routinen jetzt via CommandButtons gestartet - ginge das auch automatisch, sobald ein neuer Eintrag gespeichert wird (also im Script UserForm integriert)?
- Und ich würde gerne BEIDE Sortierfunktionen kombinieren, also in einem Wisch beide Spalten sortieren (Spalte A hat Prio 1, Spalte B hat Prio 2 = Untersortierung)
Anzeige
AW: dyn. Tabelle in 2tes Sheet sortiert
27.10.2021 09:11:37
Alwin
Hallo Beni,
wenn ich es richtig verstanden habe, möchtest du in der 2. Tabelle pro Spalte eine Stadt, also die Tabellenkoordinaten tauschen und dann damit rechnen. Würde ich so nicht machen, weil damit das Fortpflanzen der Formeln in der intelligenten Tabelle nicht so funktioniert, wie du es benötigst. Wenn du eine Ergebnisausgabe transponiert machst dürfte das eher praktikabel sein, weil dann kopiert man einfach die Spalte mit den Stadtnamen und die Ergebnisspalte und fügt diese jeweils transponiert ein. Das kannst du mit dem Makrorecorder aufzeichnen. Was den Namen der dynamischen Tabelle betrifft: Klicke in die formatierte Tabelle - Menü Entwurf - Tabellentools anklicken. Dort steht links im Menü Band der Tabellenname, welcher von die jederzeit verändert werden kann. Beachte aber, dass du die Prozeduren, welche das .ListObjects("Tbl_Ergebnis") verwenden auch entsprechend anpassen musst, damit alles funktioniert.
In die Tabelle1 kannst du deine ganzen Berechnungen nach rechts in neue Spalten eintragen. Diese pflanzen sich dann automatisch mit jeder Erweiterung fort.
Die korrigierte Prozedur TabZweischreiben bezog sich auf die zuletzt von mir hochgeladene Datei:
https://www.herber.de/bbs/user/148808.xlsm
Die Tabelle Tbl_Ergebnis, welche nach klicken des Tabellenkopfnamens der Listbox sich sortiert pflanzt sich ganz normal fort. Da konnte ich keinen Fehler finden.
Gruß Uwe
Anzeige
AW: dyn. Tabelle in 2tes Sheet sortiert
27.10.2021 21:28:11
Beni
Hallo Uwe
Ich habe inzwischen mit MakroRecorder und meinem Sortier-Script eine Zwischenlösung gefunden, die rein technisch funktioniert. Allerdings bleibt beim Rechnen Excel etwas stehen, hat wohl Mühe mit dem Ausführen über grössere Tabellen..?
Ich bin sicher, mein Script könnte schlanker und mit Schleife funktionieren - oder siehst du per Zufall noch sonst einen Bug? Evt hat auch meine Selection xlDown und xlToRight Auswirkungen auf die Rechenpower?

Sub Gruppen_Filter()
Sheets("A").Cells.Clear    'Sheet leeren, falls Datenbank-Tab geändert haben sollte
Sheets("#Datenbank_Inputs").Select
Range("A1").Select
Selection.Autofilter
ActiveSheet.Range("$A$1:$V$5").Autofilter Field:=1, Criteria1:="A"  'Filtern nach allen Städten aus Gruppe A
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("A").Select
Range("A1").Select
ActiveSheet.Paste
Range("F2").Select
With ActiveSheet.Sort
.SortFields.Add Key:=Range("B1"), Order:=xlAscending  'Städte Alphabetisch sortieren
.SetRange Range("A1", Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column))
.Header = xlYes
.Apply
End With
..... ' das ganze nochmal 3 Durchläufe mit Gruppen B,C,D
Sheets("#Datenbank_Inputs").Select
ActiveSheet.Rows.Autofilter
Sheets("#Output").Select
Range("B2").Select
End Sub

Anzeige
AW: dyn. Tabelle in 2tes Sheet sortiert
27.10.2021 09:34:13
Alwin
hatte noch etwas vergessen:
Sortieren kann man nur spaltenweise, will heißen sortiere ich Spalte Typ werden alle Spalten demensprechend sortiert u.s.w.
Was du mit Priorität meinst, lässt die Vermutung zu, dass du eigentlich filtern willst. Das würde die Sache ganz anders aussehen lassen.
AW: dyn. Tabelle in 2tes Sheet sortiert
27.10.2021 11:02:58
Beni
Hallo Uwe
Hmm evt hab ich mich unklar ausgedrückt, was ich brauche ;) Habe ein Beispiel-Blatt angefügt.
Ich möchte aus der Tabelle Dateneingabe (aus UserForm) in ein neues Sheet (Berechnungstabelle) alle Einträge einlesen - diese aber sortiert nach Gruppen (Zelle A in Tab Dateneingabe.). Also eigentlich möchte ich im neuen Sheet mehrere Tabellen, zuerst Tabelle Gruppe A, dann Tabelle Gruppe B etc, und in jeder Tabelle die Einträge alphabetisch angeordnet.
Da die Anzahl Einträge je Gruppe unklar ist / ändert, sollten die Tabellen also "wachsen' können mit der selben Formatierung, Formeln dahinter etc. Wie gesagt, auch nur die Überschrift referenzieren und Tabelle entsprechend dem Range je Gruppe anpassen würde mir reichen, die Werte kann ich mit Index rüberholen glaube ich.
Anschließend werde ich in div. Ausgabe-Sheets (kopierbar) unterschiedliche Städte vergleichen, dort greife ich mit Dropdown-Listen auf die Daten der Tabelle Berechnung (auch wieder mit Index..). Daher die Sortierung, damit die Dropdown-Listen nach Gruppe sortiert sind und in alphabetischer Reihenfolge..
https://www.herber.de/bbs/user/148815.xlsx
Diesen Code habe ich noch gefunden, der die zweifache Sortierung bewerkstelligen können sollte:

Sub SortMultipleColumns()
With ActiveSheet.Sort
.SortFields.Add Key:=Range("A1"), Order:=xlAscending
.SortFields.Add Key:=Range("B1"), Order:=xlAscending
.SetRange Range("A1:C13")
.Header = xlYes
.Apply
End With
End Sub


Anzeige
AW: dyn. Tabelle in 2tes Sheet sortiert
28.10.2021 00:50:36
Yal
Hallo Beni,
positioniere der Cursor in Dateneingabe, Zelle A1,
Drücke Strg+t (oder Einfügen, Tabelle), hat überschriften: ja,
Es öffnet sich einen Menü "Tabellentools".
Gehe auf "Mit Pivottabelle zusammenfassen", einfach ok drücken. Dann hast Du ein neues Blatt mit einer Pivot.
Verschiebe das Pivottabel-Feld "Typ" im Bereich "SPALTEN" (Drag&Drop), dito für Objekt, aber direkt unter "Typ",
Verschiebe die Felder "Kosten 1", 2, 3, im Bereich "WERT",
mit einem klick auf "Anzahl von Kosten1" gehst Du auf "WertFeldeinstellungen..." und setzst "Wertfeld zusammenfassen nach" auf "Summe",
dito für Anzahl Kosten 2 und 3.
Weil Du mehrere Wertfelder hast, gibt es jetzt in Bereich "SPALTEN" einen "Werte"-Bezeichner. Den verschiebst Du in "ZEILEN".
Rechtsklicke noch auf "A" und schalte den "Teilergebnis Typ" aus.
Jetzt hast Du den Stand, den Du als Berechnung haben möchtest. Sortierung ist automatisch.
Kommen neue Städte in "Dateneingabe" rein, dann rechtsklicke auf dem Pivottabelle und wähle aktualisieren. Wenn nicht, dann sind die wenige Klickerei schnell nochmal gemacht.
In dem Menü "Pivottabellentools" (nur sichtbar wenn der Cursor auf der Pivot liegt), gehst Du auf "Felder, Elemente und Gruppen" und wähle "berechnetes Feld".
In dem Assistent gibst Du ein Name "Berechnung" und eine Formel = Kosten1 / 5 * Kosten3
Hinzufügen drücken, bevor Ok drücken.
Dann diesen neuen Feld "Berechnung" unter den "Summe von Kosten3" platzieren.
Ausgabe: mehrere Möglichkeiten
per Formel:
wenn Du irgendwo neben dieser Pivottabelle ein "=" reinschreibe und eine Wert-Zelle aus der Pivottabelle anklickst, dann hast Du eine Formel
=PIVOTDATENZUORDNEN("Summe von Kosten1";$A$3;"Typ";"A";"Objekt";"Berlin")
Damit kannst ummodeln ("Wien" anstatt "Berlin", "Summe von Berechnung" anstatt von Kosten1, ...), und Werte nebeneinander legen.
per gefilterte Spaltenüberschrift
wenn Du den "Typ" zurück in die Felderliste verschiebst, hast Du dann nur noch die Städte als Spaltenüberschrift. Gehe auf dessen Auswahlelement (neben "Spaltenbeschriftungen") und selektiere nur die Städe, die Du anzeigen möchtest.
Der Rest wirst Du selber durch "rumspielen" entdecken. Video-Tutorial gibt es wie Sand am Meer.
Es geht nichts kaputt, alles wird separat angezeigt.
Keine VBA, keine Formel.
Na gut: berechnetes Feld. Aber das muss due nicht wie eine Excel-Formel runterkopieren, wenn neue Zeilen vorkommen.
Sortierung: drin,
Filterung: drin.
Neue Daten: rechte MT, Aktualisieren.
Und jetzt, weil Du so schnell deine Wochenaufgabe erledigt hast, hast noch ganz viele Zeit um die intelligente Seiten von Excel zu entdecken.
Nur noch ein: VBA nur, wenn keine andere Möglichkeit gibt, oder für UDF, User Defined Function. Oder VBA selbst lernen. Aber Standardwerkzeug damit nachzuprogrammieren ist witzfrei.
VG
Yal
@Alwin: man kann wohl spaltenweise (also quer) sortieren.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige