_Excel_RangeSort - Sortierproblem

  • Hallo zusammen,

    ich mal wieder mit einem Problem :)

    ich schreibe durch einen Button einige Werte in Excel. Das ganze erfolgt in 4 Spalten.

    Das ganze ist im nachhinein so aufgebaut:

    A1 | B1 | C1 | D1

    A2 | B2 | C2 | D2

    A3 | B3 | C3 | D3

    Ich möchte nun eine sortierung vornehmen. Ansich mit _Excel_RangeSort erstmal kein Problem, aber er sortiert ja nur eine Spalte. Wenn aber z.B. A3 auf die Position nach A1 sortiert wird müssen zwingend auch die Zeilen B3 auf B1 mitgehen, da die Werte zu A dazugehören, da es Kundenadresse sind. Als Beispiel in Spalte A steht der Vorname und in Spalte B der Nachname. Lasse ich nun _Excel_RangeSort drüber laufen sortiert er mir zwas z.b. die Vornamen aber zerreisst mir dann natürlich die Nachnamen denn diese sind nicht mehr zugeordnet. So heißt z.B. ein Hans Müller im nachhinein Hans Winter. (nur als Beispiel).

    Er soll also nicht eine einzelne Zelle verschieben sondern die komplette Zeile. Geht das mit _Excel_RangeSort? Die Hilfe sieht mir nicht danach aus, da ich dort nur die Sortierrichtung angeben kann, aber nicht sage, er soll die komplette Zeile bewegen.

    Ich hoffe das ist verständlich meine Formulierung :)

    Mein AutoIT Smartphone GUI >>hier<<

    Der Mensch ist das einzige Tier, dass arbeiten muss.

  • Du verwechselst zwei Dinge: Einmal der Bereich (Range) der sortiert werden soll (also A1 bis D3) und die Schlüsselspalte, nach der der Bereich sortiert werden soll (hier Spalte A).
    Poste mal den Code den Du verwendest.
    Alles andere ist Kaffeesudleserei ;)

    BTW: _Excel_RangeSort kann 2D Bereiche sortieren, sogar nach mehreren Kriterien :)

  • Interessant ist ja eigentlich nur

    AutoIt
                _Excel_RangeSort($oWorkbook, Default, Default, "A:D")

    Ich finde, dadurch das dieser Befehl etliche Sub-Angabe hat sehr unübersichtlich. Ich werde hier sicher nur was nicht eingetragen haben da meine Angabe doch seeehr Basic ist :)

    So gesehen soll er ja eigentlich wirklich nur Spalte A sortieren (alphabetisch aufsteigend) und die Spalten B, C, D lediglich mitziehen. Wenn also ein Eintrag aus Spalte aus von Zeile 3 auf 1 hochsortiert wurde, dann müssen auch die Spalten B, C, und D von Zeile 3 auf 1 hochgezogen werden.

    Mein AutoIT Smartphone GUI >>hier<<

    Der Mensch ist das einzige Tier, dass arbeiten muss.

    Einmal editiert, zuletzt von mirko2002 (19. Oktober 2018 um 11:56)

  • Das Beispiel 1 in der Hilfe zu macht genau was du erreichen möchtest. Deine Sort-Zeile sollte also so aussehen:

    Code
    _Excel_RangeSort($oWorkbook, Default, "A1:D" & $oBook.Worksheets(1).UsedRange.Rows.Count), "A:A")

    vielleicht geht auch:

    Code
    _Excel_RangeSort($oWorkbook, Default, Default, "A:A")
  • Ach verdammte Axt.... ja es funktioniert. Und zwar genauso wie ich es bereits eingetragen hatte. Nur die Range A:D war bei mir falsch und zwar A:A musste es sein.

    Danke :)

    Mein AutoIT Smartphone GUI >>hier<<

    Der Mensch ist das einzige Tier, dass arbeiten muss.