Office: Makro Sortierung unabhängig von der Tabellenblattbezeichnung

Helfe beim Thema Makro Sortierung unabhängig von der Tabellenblattbezeichnung in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich benötige Unterstützung zu Makros in Excel, bin absoluter Makro-Neuling. Ausgangslage: Eine aus Pivot generierte Tabelle mit den... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von nicd, 29. November 2020.

  1. Makro Sortierung unabhängig von der Tabellenblattbezeichnung


    Hallo,

    ich benötige Unterstützung zu Makros in Excel, bin absoluter Makro-Neuling.

    Ausgangslage: Eine aus Pivot generierte Tabelle mit den entsprechenden Filterfunktionen in der ersten Zeile und dem automatisch vergebenen Namen "Tabelle 1".

    Per Makro möchte ich eine benutzerdefinierte Sortierung vornehmen nach 3 Ebenen:
    Alle Zeilen, die als Tabelle 1 aus der Pivot generiert werden, sollen nach Spalte C, D und schließlich E, jeweils aufsteigend sortiert werden. Der Kopf soll natürlich stehen bleiben.

    Das habe ich mit folgendem hinbekommen (über Funktion Makro aufzeichnen):

    Sub Makro2a()
    '
    ' Makro2a Makro
    '

    '
    ActiveWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle1").Sort.SortFields. _
    Clear
    ActiveWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle1").Sort.SortFields. _
    Add2 Key:=Range("Tabelle1[Datum]"), SortOn:=xlSortOnValues, Order:= _
    xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle1").Sort.SortFields. _
    Add2 Key:=Range("Tabelle1[MA]"), SortOn:=xlSortOnValues, Order:= _
    xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle1").Sort.SortFields. _
    Add2 Key:=Range("Tabelle1[von]"), SortOn:=xlSortOnValues, Order:= _
    xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle1").Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    End Sub


    Dabei entsteht das Problem, dass das Makro nur auf die Tabelle 1 angewandt wird. Wenn weitere Datentabellen aus Pivot ("Tabelle 2" ...) kommen, passiert logischerweise nichts.

    Ich möchte es gern unabhängig von der Tabellenblattbezeichnung ausführen können - halt für das gerade geöffnete Tab.blatt.



    Gleich vorab schon mal Vielen Dank für eure Hilfe!

    :)
     
  2. Hi,

    Wen wunderts? Wenn Du
    Code:
    angibst, dann wird auch nur das berücksichtigt.
    Wenn Du flexibel sein willst, musst Du Variablen benutzen.
    Zumindest je eine für das Tabellenblatt, eine für das Listobjekt, und eine (oder ein Array) für die zu sortierende(n) Spalte(n).

    Dazu musst Du erst mal die Sub umbenennen. Am Besten natürlich in Sub Sortieren

    Dann brauchst Du noch die Parameterliste, beispielsweise:
    Code:
    Dann musst Du m Code alle hartcodierten Vorkommen durch die Variablennamen ersetzen.
    Also statt:
    Code:
    so:
    Code:
    Gut wäre auch, wenn Du with verwendest, so dass Du das nicht ständig neu formulieren musst.

    Bevor Du diese Sub dann aufrufst, müssen die Objekte natürlich auch als entsprechende Objekte gesetzt werden.

    Das kannst Du so machen:
    Code:
    Und wie Du siehst, wäre es durchaus angebracht, das Listobjekt auch umzubenennen. Meinetwegen in liTabelle1, damit man es Namenstechnisch betrachtet vom Worksheet unterscheiden kann. Aber egal....
    Nachdem Du das gemacht hast, kannst Du Deine Sortieroutine ganz flexibel aufrufen:

    Code:
    Übrigens.... ActiveWorkbook, ActiveCell etc. sind selten gute Ideen. Wer weiß schon immer, was gerade aktiv ist....
     
  3. Hallo R J,

    Danke für deine Antwort - die mich zugegebenermaßen als Neuling überfordert.

    Ich hatte eher an so eine Lösung gedacht:
    http://www.*************************562140_0_0_asc.php

    Würde das hier auch funktionieren und an welchen Stellen ist dass was zu ändern?

    LG
    nicd
     
  4. Makro Sortierung unabhängig von der Tabellenblattbezeichnung

    Dein Link ist leider nicht erreichbar....

    Hab Dir mal ein Beispiel gebastelt:
    Das Beispiel setzt voraus, dass es ein Tabellenblatt "Personen" gibt, auf dem sich eine formatierte Tabelle Namens "tblPersonen" befindet (also beide wurden manuell umbenannt), die über eine Spalte "Nachname" verfügt.

    Code:
    Aus Add2 hab ich mal ein Add gemacht, damit der Code auch auf älteren Excelversionen läuft...
     
  5. ...hier mal ein noch einfacheres Vorgehen. Sollte auch für Anfänger geeignet sein. Die Sub FlexibelSortieren bleibt unverändert. Lediglich die Sortierwünsche im Sub Startsortierung müssen je nach Wunsch angepasst werden.
    Dabei gilt:
    Aufruf der Prozedur mit ihrem Namen: FlexibelSortieren + Leerzeichen
    Parameter 1 (hier Artikel) entspricht dem Tabellennamen, auf dem sich das Listobjekt befindet
    Parameter 2 (nach dem 1. Komma), ist der Name des Listobjektes
    Parameter 3 (nach dem 2. Komma), die Spalte oder durch Komma getrennte Angabe der Spalten, die in Reihenfolge der Angabe sortiert werden sollen. Führende oder am Ende befindliche Leerzeichen in den Spaltennamen des Listobjekts sind nicht zulässig.

    Alle Parameter als Zeichketten angeben

    Insgesamt sähe der Aufruf dann beispielsweise so aus: FlexibelSortieren "Artikel", "tblArtikel", "Warengruppe,Artikelbezeichnung,Menge"

    oder als Code:
    Code:
    Hier mal als Gesamtbeispiel:
    Code:
     
Thema:

Makro Sortierung unabhängig von der Tabellenblattbezeichnung

Die Seite wird geladen...
  1. Makro Sortierung unabhängig von der Tabellenblattbezeichnung - Similar Threads - Makro Sortierung unabhängig

  2. Makro: Ersetze die ersten 10 Werte zwischen 50 und 100

    in Microsoft Excel Hilfe
    Makro: Ersetze die ersten 10 Werte zwischen 50 und 100: Hallo zusammen, ich bin neu hier (und auch im Umgang mit Makro), stehe aber vor einer, aus meiner Sicht großen, Aufgabe bei der vermutlich nur Makro helfen kann. Ausgangslage: - In Zelle A1...
  3. Text in derselben Zelle ersetzen (ohne Makro)

    in Microsoft Excel Hilfe
    Text in derselben Zelle ersetzen (ohne Makro): Guten Morgen, ich möchte in eine Zelle (z.B. A1) eine stets zweistellige Zahl (XY) eintragen und in derselben Zelle dann die Ausgabe erhalten: "Geprüft: X von Y". Ist das irgend wie möglich?...
  4. Makro-Fehler bei Sortierung von Daten

    in Microsoft Excel Hilfe
    Makro-Fehler bei Sortierung von Daten: Hallo! Ich habe eine fremde Datei erhalten, in der ich nun einige Zeilen eingefügt habe. Dachte schon, daß ich an alles gedacht habe - aber: Es gibt in dieser Datei auch Makros, die einen Teil...
  5. Save As im Makro

    in Microsoft Excel Hilfe
    Save As im Makro: Hallo Zusammen , benutze ein Makro um eine Exceldatei alle 10 Minuten zu speichern. Das Makro wird beim öffnen der Datei gestartet. Nun haben sich einige Umstände geändert, so das die Datei auch...
  6. Gekennzeichnete Spalten mit WENN-Bedingung in Makro nach 5 Tabellen kopieren

    in Microsoft Excel Hilfe
    Gekennzeichnete Spalten mit WENN-Bedingung in Makro nach 5 Tabellen kopieren: Hallo, Ich habe ein Makro, welches ich gerne ein wenig erweitern möchte, um mir bei der Weiterverarbeitung der Ergebnisse deutlich Zeit zu sparen. Da dies meine sehr rudimentären Makrokenntnisse...
  7. Makro Zeilen kopieren und einfügen nach Bedingung

    in Microsoft Excel Hilfe
    Makro Zeilen kopieren und einfügen nach Bedingung: Hallo liebe Community, für eine Vertragsanpassung möchte ich eine Liste mit mehreren 1000 Einträgen (Zeilen) überarbeiten. Auf Grund des juristischen Vorgehens ist es wichtig, die Vorher/Nachher...
  8. Makro für Sortierung eines Bereiches und Einfügen einer Leerzeile bei Gruppenwechsel

    in Microsoft Excel Hilfe
    Makro für Sortierung eines Bereiches und Einfügen einer Leerzeile bei Gruppenwechsel: Hallo Forumgemeinde, Ich habe eine Tabelle mit verschiedenen Angaben in den Spalten A bis N. Derzeit gibt es ca. in 30 Zeilen Eintragungen, täglich kommen ca. 2-3 Zeilen dazu. Deshalb muss die...