Office: Sortieralgorithmus

Helfe beim Thema Sortieralgorithmus in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Marina, anbei eine neue Version. Die Eingabe des Dateinamens (ohne Endung) erfolgt in C1, die Spaltenzahl wird per Datenüberprüfung in F1... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von msz7, 14. Januar 2017.

  1. Sortieralgorithmus


    Hallo Marina,

    anbei eine neue Version.
    Die Eingabe des Dateinamens (ohne Endung) erfolgt in C1, die Spaltenzahl wird per Datenüberprüfung in F1 vorgegeben. Es sind nur gerade Werte von 2 bis 12 erlaubt.

    Für die Ergebniserstellung habe ich folgendes Verfahren gewählt:
    - Die Originaldatei enthält ein Muster für maximal 12 Spalten
    - diese Tabelle ist in einer eigenen Tabelle hochgeladen und muss noch in die Auswertungsdatei eingefügt werden
    - Für die Auswertung wird eine Kopie dieses Musters mit der gewünschten Spaltenzahl erstellt (Name „Auswertung“)
    - Diese Tabelle wird in die neue Datei kopiert
    - Tabelle „Auswertung“ bleibt erhalten, wird aber vor der nächsten Auswertung gelöscht
    - Im Code habe ich im ersten Teil Hinweise zu erforderlichen Definitionen gegeben, aber dort schon Werte angegeben, die modifiziert werden können.

    Gruß
    Aloys
     
    aloys78, 29. Januar 2017
    #16
  2. Hallo Aloys,

    da hab ich am Freitag kurz vor deiner Antwort Feierabend gemacht :-)

    Also was mir direkt auffällt - die Werte stehen in deiner Datei in A1:B(n). In der Datei die ich verarbeiten muss, sind die Werte erst ab A19:B(n) geschrieben.

    Ich habe mal eine Musterdatei erstellt, wie sie aussehen müsste, damit sie direkt weiterverarbeitet werden kann.

    Muster-Sortiert.xlsx

    Fehlen noch irgendwelche Informationen? Falls ja, ich bin erreichbar :-)

    Dankeschön!

    Liebe Grüße
    Marina
     
  3. Hallo Marina,

    soll das Ergebnis ebenfalls in Zeile 19 beginnen ?

    Ist die Muster-Tabelle so in Ordnung ?

    Kommen die Daten unsortiert oder nach ID sortiert ?

    Gruß
    Aloys
     
    aloys78, 29. Januar 2017
    #18
  4. Sortieralgorithmus

    Hallo Aloys,

    ja, die Datei mit den sortierten Ergebnissen soll genau so aussehen wie in dem Muster das ich angehängt hatte (also wie Du siehst sind die sortierten Spalten auch nicht nebeneinander, sondern untereinander. Finde ich unübersichtlich, aber ist leider so erforderlich).

    In der Datei die ich bekomme sind die Werte nach ID sortiert enthalten.

    Liebe Grüße
    Marina
     
  5. Hall Marina,
    Dann schau Dir mal die Datei an.
    Dort sind die Daten unsortiert in B:C statt in A:B, und darüber hinaus nichts.

    Ich brauche eine Tabelle, mir der ich arbeiten kann.
    Die Daten können sortiert/unsortiert sein, ich sollte es nur wissen.
    Das Layout für das Ergebnis gehört da auch rein, C1 mit Dateinamen und was ist mit meinem Vorschlag zur Spalteneingabe in F1 ?

    Ja, und soll der Button incl. Code mit übernommen werden ?

    Gruß
    Aloys
     
    aloys78, 29. Januar 2017
    #20
  6. Hallo Aloys,

    ich versuche es noch mal besser zu erklären.

    Beispiel-Quelldatei.xlsx
    Diese Datei bekomme ich zugeschickt. Aus dem Text, der in A1:C15 steht, erkenne ich, in wie viele Spalten ich sortieren muss.

    Jetzt muss der Sortieralgorithmus (ich glaube den hatte ich verständlich erklärt, oder?) durchlaufen. Daraus muss eine neue Datei entstehen (Dateiname aus Beispiel-Quelldatei.xlsx C1 + Datum) die so aussieht:
    Beispiel-Ergebnis.xlsx

    Die sortierten Spalten stehen jetzt untereinander, das macht es ein bisschen unverständlicher glaube ich. Also im Endeffekt so:
    Beispiel-Algorithmus.JPG

    Allerdings kann es auch eine ungerade Spaltenanzahl geben - ich habe gesehen, dass Du in Deiner letzten Datei nur gerade Zahlen von 2-12 berücksichtigt hattest. Wäre eine Umsetzung für alle Zahlen zwischen 1-12 möglich?

    Ich hoffe ich konnte es damit ein bisschen verständlicher machen *frown.gif*

    Vielen lieben Dank schon mal!
    Marina
     
  7. Hallo Marina,
    Ja - es reicht aber nicht aus !
    Du lieferst Stückwerk und gehst nicht auf alle Fragen ein (zB mein Vorschlag zur Eingabe der Spaltenzahl, Layout Ausgabe)

    Was bekomme ich konkret als Input ?
    Wird Output in gleicher Tabelle gespeichert ? in welchen Positionen ?
    Wie sieht der Output aus, wenn bei 4 Spalten mehr als 24 Zeilen zur Verfügung stehen ?

    Gruß
    Aloys
     
    aloys78, 30. Januar 2017
    #22
  8. Sortieralgorithmus

    Hallo Aloys,

    die Eingabe der Spaltenzahl war so auf jeden Fall in Ordnung!

    Die Frage zum Layout der Ausgabe wollte ich mit der Datei Beispiel-Ergebnis.xlsx beantworten. Das sieht zwar sehr spartanisch aus, aber da die Datei auch nur weiterverarbeitet wird, muss es nicht hübsch sein.

    Der Input ist exakt die Datei Beispiel-Quelldatei.xlsx. Die Werte sind dort nach ID sortiert (ab A19) und die Anzahl der Werte variiert.

    Der Output (also die sortierten Werte) soll in einer neuen Datei gespeichert werden, deren Dateiname sich aus C1 und dem aktuellen Datum zusammen setzt.
    Beginnend ab B19 soll die erste Spalte mit sortierten Werten eingefügt werden. Darunter (mit zwei Zeilen Abstand) dann die nächste Spalte (in Beispiel-Ergebnis.xlsx ab B329).


    Wie sieht der Output aus, wenn bei 4 Spalten mehr als 24 Zeilen zur Verfügung stehen ?
    Diese Frage verstehe ich leider nicht so ganz. Wie viele Zeilen benötigt werden, hängt davon ab, wie viele Werte in der Quelldatei vorhanden sind. in Beispiel-Quelldatei waren es 616 Werte die in zwei Spalten sortiert werden sollten - also zwei mal 308 Werte.
    Würden die Werte in vier Spalten einsortiert werden, wären es vier mal 154 Werte.

    Die Grafik war nur um zu veranschaulichen wie der Algorithmus funktioniert - unabhängig von der Anzahl der Werte.

    Konnte ich Deine Fragen beantworten?

    Gruß
    Marina
     
  9. Hallo Marina,
    Die Frage ist nicht beantwortet, bzw Deine Antwort kann ich nicht nachvollziehen.

    Du zeigst bei diesem Beispiel exakt 24 Zeilen. Wie sieht die Darstellung der nächsten 24 Zeilen bzw der übrigen 600 aus ?

    Gruß
    Aloys
     
    aloys78, 30. Januar 2017
    #24
  10. Hallo Aloys,

    Beispiel-Algorithmus.xlsx
    ich habe hier mal eine Datei erstellt, wie die Sortierung mit 76 bzw. 78 (bei drei Spalten) aussehen würde. Je nach Anzahl werden die Spalten dann natürlich länger.

    Ich hoffe das macht es verständlich.

    Liebe Grüße
    Marina
     
  11. Hallo Marina,

    wieder einen Schritt weiter.

    Aber noch 2 Fragen:

    Alle Spaltenblöcke enthalten die gleiche Zeilenzahl ? Der Rest wird wieder abgeschnitten ?

    In bestimmten Fällen, insbesondere bei ungerader Spaltenzahl, wird die Zeilenzahl je Spaltengruppe ungerade. So beginnt und endet dann die 1. Gruppe mit Kleinste, und die nächste Gruppe dann mit Grösste.
    Ist das so gewollt ?

    Gruß
    Aloys
     
    aloys78, 30. Januar 2017
    #26
  12. Hallo Aloys,

    genau, alle Spaltenblöcke haben die gleiche Anzahl an Zeilen und der Rest wird abgeschnitten.

    Die Zeilenzahl pro Spalte kann auch ungerade sein, ja. Aber jede Spalte beginnt immer mit "x-kleinster Wert" (siehe Beispiel-Algorithmus) und endet dann - je nachdem ob die Zeilenanzahl pro Spalte gerade oder ungerade ist - auf "x-kleinstem" oder "x-größtem" Wert.

    Ich hoffe das hilft *Smilie

    Liebe Grüße
    Marina
     
  13. Sortieralgorithmus

    Hallo Marina,
    So ist es realisiert; in F1 kannst Du Werte von 1 bis 12 eingeben.
    So ist es realisiert.
    Das macht mE keinen Sinn:
    Bei ungerader Zeilenzahl pro Spalte endet nämlich die Gruppe immer mit einem x-kleinsten Wert.
    Daher habe ich es wie folgt gelöst:
    Ich nehme nur die ersten z Zeilen: z = Ganzzahl(n/v), wobei n = Gesamtzeilenzahl und v das kleinste gemeinsame Vielfache von 2 und Spaltenzahl ist.

    Das Ergebnis wird schrittweise im Blatt Ergebnis erstellt und erst dann in einer anderen Datei erstellt.

    Gruß
    Aloys
     
    aloys78, 31. Januar 2017
    #28
  14. Guten Morgen Aloys,

    die Eingabe für die Spaltenanzahl ist optimal, danke!

    Das war so gemeint, dass bei gerader Zeilenanzahl der letzte Wert der x-größte ist und bei ungerader Zeilenanzahl der x-kleinste. Ich glaube insofern sind wir uns da einig, das stimmt so *Smilie

    Ich bin gerade mal einige Sortierungen durchgegangen. Die Ergebnisse sind richtig, allerdings ist mir aufgefallen, dass nicht immer alle Werte sortiert wurden, obwohl noch genug Wertepaare übrig waren.

    Beispiel:
    300 Werte die in 4 Spalten sortiert werden sollen. Macht 75 Werte pro Spalte - wenn ich mir das Ergebnis angucke, werden allerdings nur 296 Werte einsortiert und die 4 größten Werte bleiben über. Diese hätten aber eigentlich noch an die 4 Spalten angehängt werden müssen. Dadurch wäre die Summe aller Werte pro Spalte nicht mehr identisch, aber das ist so gewollt.
    Auch bei 39 Werten, die in 3 Spalten einsortiert werden, werden die 3 größten Werte nicht berücksichtigt.


    Die Spalte C im Tabellenblatt "Ergebnis" ist sehr gut zur Übersicht! Gefällt mir sehr gut *Smilie Wenn du Spalte C und D tauschen könntest, wäre das optimal.

    Vielen, vielen Dank!
    Liebe Grüße
    Marina
     
  15. Hallo Marina,
    Kein Problem, dauert aber ein wenig, da ich heute unterwegs bin.
    Ich habe Dir doch den Grund hierfür in meinem vorherigen Beitrag beschrieben;
    nochmal anders ausgedrückt:
    - die erste Position einer Spaltengruppe soll immer eine x-kleinste sein,
    - wenn die Anzahl je Gruppe nicht durch 2 teilbar ist, ist die letzte Position ebenfalls eine x-kleinste,
    - da die nächste Gruppe wieder mit x-kleinste beginnt, lägen dann 2 x-kleinste direkt untereinander und das wäre ein Widerspruch zur Aussage 1

    Daher müssen im Moment noch die Spaltengruppen eine gerade Anzahl von Positionen enthalten.

    Gruß
    Aloys
     
    aloys78, 31. Januar 2017
    #30
Thema:

Sortieralgorithmus

  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden