| |
| Wie Sie mit 3D-Druck glattere Oberflächen erhalten, eine Pressemitteilung
|
Autor
|
Thema: Sortieren in Listen (1201 mal gelesen)
|
dan_rather Mitglied Techniker HLK
Beiträge: 97 Registriert: 09.12.2003
|
erstellt am: 04. Jun. 2004 11:55 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, hab folgendes Problem: Ich würde gerne eine Spalte Sortieren in der zb folgendes steht: 77.2 78.2 66.2.1 66.2.10 66.2.2 66.2.3 66.2.31 66.2.32 66.2.33 66.2.34 66.2.5 66.2.6 66.2.7 66.2.8 das ergebniss sollte dann so aussehen: 66.2.1 66.2.2 66.2.3 66.2.31 66.2.32 66.2.33 66.2.34 66.2.5 66.2.6 66.2.7 66.2.8 66.2.10 77.2 78.2 mit den sortieroptionen von excel Funktioniert es nicht. Das ganze soll als VBA-Code ausgeführt werden. Danke schonmal Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kjung Mitglied Administrator
Beiträge: 399 Registriert: 17.03.2003 CATIA V4.2.4 CATIA V5R9SP4, V5R10SP5, VPM 1.5 PTF11/12 AIX 4.3.3 ML10 WIN2K
|
erstellt am: 04. Jun. 2004 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für dan_rather
Hallo, ich meine, das wird Dir mit keiner Sort-Funktion - wie auch immer geartet - gelingen, da 66.2.10 hinter 66.2.1 steht, genauso, wie 66.2.31 auf 66.2.3 folgt. Diese Zahl ist nicht numerisch zu sortieren (da keine Zahl), es sei denn, Du teilst die Zahl auf. Mit VBA kenn ich mich überhaupt nicht aus.
------------------ Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Ehrenmitglied V.I.P. h.c. IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 04. Jun. 2004 13:37 <-- editieren / zitieren --> Unities abgeben: Nur für dan_rather
Hallo dan_rather, wie Klaus schon gesagt hat, eine einfache numerische Sortierung kommt nicht in Frage ... aber ich kann auch keine Logik hinter der angegebenen Resultat-Reihenfolge erkennen, und so etwas ist natürlich zwingend notwendig, wenn man einem strohdummen Computer so etwas beibringen will Gibt es denn eine Logik? Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de KLAMM? Was ist KLAMM? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dan_rather Mitglied Techniker HLK
Beiträge: 97 Registriert: 09.12.2003
|
erstellt am: 04. Jun. 2004 13:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Stefan, die Logik ist vorhanden. Es handelt sich hier um Positionsnummern einer RLT-Anlage. Ergo: Pos. 1, Pos. 2 usw. Dann pos. 1.1, 1.2, 1.3 usw Dann Pos. 1.1.1, 1.1.2, 1.1.3 usw. Wäre total Glücklich wenn Ihr eine Idee hättet. Übrigens sind die Positionsnummer in meiner Tabelle als Text dklariert, weil ich diese nur zum sortieren brauche. Danke einstweilen für die bisherigen Antworten. Gruß Dan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 04. Jun. 2004 13:53 <-- editieren / zitieren --> Unities abgeben: Nur für dan_rather
Hi Dan, Du könntest es zwar mal s.u. versuchen, vermute aber mal damit wirst Du auch nicht so richtig glücklich werden ... Wobei ich der Meinung bin, das müsste sich noch rauskitzeln lassen irgendwie, aber *ismirschlecht* und zu hoch, keinen Plan wie ... Probier' mal und sieh' selbst welchen Humbuk er momentan fabriziert angenommen deine Daten seien in Spalte A. CU Nancy --
Code:
Option Explicit Option Compare TextSub test() Dim i As Long, x As Integer ReDim var(1 To 1) For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row ReDim Preserve var(1 To i) var(i) = Cells(i, 1).Value Next BubbleSort var Range(Cells(1, 2), Cells(UBound(var), 2)) = Application.Transpose(var) End Sub Public Sub BubbleSort(ByRef vntArr As Variant) Dim iCount, i, j As Integer Dim strTemp As String iCount = UBound(vntArr, 1) For j = 0 To iCount - 1 For i = 0 To iCount - 2 If LenB(Str(vntArr(i + 1))) > LenB(Str(vntArr(i + 2))) Then strTemp = vntArr(i + 2) vntArr(i + 2) = vntArr(i + 1) vntArr(i + 1) = strTemp End If Next i Next j End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dan_rather Mitglied Techniker HLK
Beiträge: 97 Registriert: 09.12.2003
|
erstellt am: 04. Jun. 2004 14:02 <-- editieren / zitieren --> Unities abgeben:
|
pablo Mitglied Techniker
Beiträge: 453 Registriert: 23.01.2002 Win10 Office 365 SE 2020
|
erstellt am: 04. Jun. 2004 14:07 <-- editieren / zitieren --> Unities abgeben: Nur für dan_rather
Hallo Dan, nach welchen Kriterien willst du sortieren? Als Text kommt 66.2.10 vor 66.2.2, als Zahl kommt 66.2.31 nach 66.2.5, wieso kommt 66.2.31 nach 66.2.3, wohin käme 66.2.11? Oder sollte es 66.2.3.1 heißen? pablo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dan_rather Mitglied Techniker HLK
Beiträge: 97 Registriert: 09.12.2003
|
erstellt am: 04. Jun. 2004 14:11 <-- editieren / zitieren --> Unities abgeben:
|
Ralf_A Mitglied
Beiträge: 269 Registriert: 14.10.2002
|
erstellt am: 07. Jun. 2004 13:56 <-- editieren / zitieren --> Unities abgeben: Nur für dan_rather
Hallo dan_rather, hättest du die Möglichkeit folgendes einzugeben 66.2.01 66.2.02 66.2.03 66.2.031 66.2.032 66.2.033 66.2.034 66.2.05 66.2.06 66.2.07 66.2.08 66.2.10 77.2 78.2 also mit den eingefügten Nullen, dann würde es gehen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 21. Jun. 2004 15:10 <-- editieren / zitieren --> Unities abgeben: Nur für dan_rather
erstelle einfach eine Hilfsspalte und stelle die die Positionsnummern ohne . dar, dann geht auch das Sortieren und Excel erkennt auch die Logik. Formel wäre zb. in Spalte B VERKETTEN(TEIL(A4;1;2);TEIL(A4;4;1);TEIL(A4;6;2)) wenn deine Liste in Spalte A ist. Anschliessend nach Spalte B sortieren - wenn sie stört, ausblenden. eine andere Möglichkeit wäre, die Positionsnummern ohne . zu schreiben und auf 5 Ziffern hinten mit 0 auffüllen. Über Zellformat formatierst du diese Zelle dann ##"."#"."## Damit kann man auch sortieren mit dem gewünschten Ergebnis - ist halt die Frage ob die Nullen stören 66.2.10 66.2.10 66.2.20 66.2.30 66.2.31 66.2.32 66.2.33 66.2.34 66.2.50 66.2.60 66.2.70 66.2.80 77.2.00 78.2.00 [Diese Nachricht wurde von Thomas Harmening am 21. Jun. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |