Thema
|
Datum
|
Von Nutzer
|
Rating
|
Antwort
|
KNIFFLIG! Matrix auf Gleichheit sortieren |
19.03.2009 20:15:23 |
sebas |
|
|
|
21.03.2009 09:06:45 |
Holger |
|
|
|
22.03.2009 19:26:38 |
sebas |
|
|
|
23.03.2009 16:38:14 |
Holger |
|
|
|
24.03.2009 17:05:28 |
sebas |
|
|
|
26.03.2009 11:54:34 |
Sebastian |
|
|
Von:
sebas |
Datum:
19.03.2009 20:15:23 |
Views:
2292 |
Rating:
|
Antwort:
|
Thema:
KNIFFLIG! Matrix auf Gleichheit sortieren |
Hallo Profis,
habe in einer Excel Tabelle z.B. 10x10 Zellen mit Daten und möchte diese (zeilenweise) auf Gleichheit (NICHT nur alphabetisch!) sortieren. Zunächst soll nach Spalte A, dann nach B usw. sortiert werden, jedoch ohne dass die Zeile verändert wird und so, dass so wenig wie möglich Werte-Wechsel zwischen den Zeilen vorkommen.
Die "normale" Sortierfunktion von Excel oder anderer Ausführungen im Netz reicht hier leider nicht aus da folgender "Sortierfehler" auftritt (siehe Bsp)
Mit dem Code den ich bisher programmiert habe kann ich wie Excel auch sortieren, jedoch nach beliebiger Anzahl an Spalten. Jedoch soll das Programm verfeinert werden um so gleiche Elemente in der Matrix zusammen bringen. (Code am Ende)
Würde mich über jede Anregung freuen!!!!!
Gruß Sebas
Bsp: unsortiert
a c
a a
b b
b c
a b
b a
Bsp: nach Excel Sortierweise:
a a
a b
a c
b a
b b
b c
Bsp: nach Gleichheit sortieren
-> im Vergleich zu Excel-Weise ist hier Zeile 4 mit 6 vertauscht und somit sind die C's zusammen :)
a a
a b
a c
b c
b b
b a
CODE:
For x = erste_spalte To letzte_spalte
'Schleife über jedes Element im der Spalte(vom Erstem bis zum Voreltzten)
For y = erstesy To letztesy - 1
'Schleife über jedes folgende Element in der Spalte
For y2 = y + 1 To letztesy
'Untersuchen ob Elemente gleich sind
If tbl.Cells(y, x) = tbl.cells(y2, x) Then
'nur wenn scharf, soll Verschoben werden (Damit nicht Verschoben wird, wenn lauter gleiche Daten)
If scharf = True Then
'Abstand zwischen den zu betrachteten Elementen berechnen
abstand = y2 - y
'auswählen des momentan betrachteten Elementes
form_agregar.lb_ausw.ListIndex = y - 3
'Verschieben des momentan betrachteten Elementes bis es über dem gleichen Element steht
Do While abstand > 1
'Externe Funktion, welche Elemente tauscht
Call move_down
abstand = abstand - 1
Loop
' nach Verschieben nicht next sondern gleiche Poistion noch einmal
y = y - 1
scharf = False
Exit For
End If
Else
'Wenn keine gleichen Komponenten ->scharf stellen
scharf = True
End If
End If
Next y2
Next y
Next
|
- Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
- Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
- Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
- Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
- Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei
Antworten auf Ihren Beitrag zu benachrichtigen
Bitte geben Sie ein aussagekräftiges Thema an.
Bitte geben Sie eine gültige Email Adresse ein!
- Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
- Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
- Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
- Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
- Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei
Antworten auf Ihren Beitrag zu benachrichtigen
Thema
|
Datum
|
Von Nutzer
|
Rating
|
Antwort
|
KNIFFLIG! Matrix auf Gleichheit sortieren |
19.03.2009 20:15:23 |
sebas |
|
|
|
21.03.2009 09:06:45 |
Holger |
|
|
|
22.03.2009 19:26:38 |
sebas |
|
|
|
23.03.2009 16:38:14 |
Holger |
|
|
|
24.03.2009 17:05:28 |
sebas |
|
|
|
26.03.2009 11:54:34 |
Sebastian |
|
|