Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Sortieren A bis Z versus kleiner größer

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Sortieren A bis Z versus kleiner größer (446 mal gelesen)
Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von Andi Beck an!   Senden Sie eine Private Message an Andi Beck  Schreiben Sie einen Gästebucheintrag für Andi Beck

Beiträge: 2537
Registriert: 02.10.2006

Firma: SW 2021-5.1 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2021-5.1
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 03. Apr. 2022 11:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Sortierung-A-bis-Z.png

 
Hallo,
ich bin in einem Makro, welches ich aus SolidWorks aus starte.
Aus diesem Makro greife ich auf eine Excel-Tabelle zu, in der über 30.000 Zeilen enthalten sind.
Um einen bestimmten Datensatz zu finden, verwende ich aus Geschwindigkeitsgründen die Biselection-Methode.
Diese Methode erwartet eine sortierte Tabelle.
Deshalb sortiere ich die Tabelle mit folgendem Befehl.

Code:

xlWs.Range(strBereich).Sort Key1:=xlWs.Range(strSpalte & "1"), Order1:=1, Header:=1, DataOption1:=1

Was sortiert werden soll, seht ihr im angehängten Bild.
Die beiden rot markierten Zeilen sind ein Problemfall.
Das Sortierergebnis nach DataOption1:=1 oder DataOption1:=0 ist gleich.

Nun verwende ich in der Biselection-Methode den <> Vergleich.
Leider entspricht dies nicht der Sortierreihenfolge nach A bis Z.
Ich bekomme zum Teil falsche Ergebnisse, weil die Sortierung nicht stimmt.

Zum Test habe ich folgende Abfrage erstellt.

Code:

                If "01-10-04-001-102B-Rev-A-01" < "01-10-04-001-102-Rev-A-01" Then
                    Debug.Print "01-10-04-001-102B-Rev-A-01 < 01-10-04-001-102-Rev-A-01"
                Else
                    Debug.Print "01-10-04-001-102B-Rev-A-01 > 01-10-04-001-102-Rev-A-01"
                End If

Als Ergebnis bekomme ich folgenden Ausdruck:

01-10-04-001-102B-Rev-A-01 > 01-10-04-001-102-Rev-A-01

In der Sortierung ist aber der gesuchte Wert kleiner. (siehe Bild)

Was nun, wie kann ich die Excel-Tabelle nach <> sortieren oder meine Abfrage so umgestalten, das nach der alphabetischen Reihenfolge gefragt wird?

Für Ratschläge schon mal besten Dank, Andi 

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 03. Apr. 2022 19:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andi Beck 10 Unities + Antwort hilfreich

Interessantes Phänomen, auch wenn ich Dir dazu keine Lösung anbieten kann.

Habe mal verschiedene Test gemacht, komme aber immer auf die gleichen Ergebnisse wie Du.
So wie es aussieht betrachtet Excel beim Sortieren das Zeichen "-" als Trennzeichen zwischen Ausdrücken, die für sich genommen zwischen Zahlen und Text einzeln sortiert werden.

Einzige Möglichkeit wäre, Du tauscht vorab alle "-" gegen ein anderes Zeichen (z.B. "#" oder "."), lässt sortieren und tauscht wieder zurück. Nachdem Du es im Programm machst spielt es vom Aufwand her ja keine Rolle. Muss nur sichergestellt sein dass das Zeichen sonst nicht verwendet wird und es im Charcode auch unter 48 ( = 0) ist. Minus ist Chr(45), Komma = 44, Punkt = 46.

Vielleicht hilft's
Grüße
Klaus   

[Edit]Was mir noch dazu einfällt:
Warum verwendest du die Biselection-Methode und nicht Range.Find ?
Find ist relativ schnell und Du sparst Dir das Sortieren

[Diese Nachricht wurde von KlaK am 03. Apr. 2022 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von Andi Beck an!   Senden Sie eine Private Message an Andi Beck  Schreiben Sie einen Gästebucheintrag für Andi Beck

Beiträge: 2537
Registriert: 02.10.2006

Firma: SW 2021-5.1 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2021-5.1
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 03. Apr. 2022 19:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Klaus,
danke für deine Anregungen.
Dein Vorschlag wäre ein Test wert.
Ich habe mal von Hand den entsprechenden Bereich mit "#" ersetzt, und siehe da, Excel sortiert tatsächlich anders.

Mal abwarten, ob noch weitere Vorschläge kommen.

Besten Dank und einen schönen Restsonntag, Andi

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 03. Apr. 2022 19:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andi Beck 10 Unities + Antwort hilfreich

Hab oben noch etwas ergänzt

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von Andi Beck an!   Senden Sie eine Private Message an Andi Beck  Schreiben Sie einen Gästebucheintrag für Andi Beck

Beiträge: 2537
Registriert: 02.10.2006

Firma: SW 2021-5.1 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2021-5.1
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 03. Apr. 2022 19:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von KlaK:

[Edit]Was mir noch dazu einfällt:
Warum verwendest du die Biselection-Methode und nicht Range.Find ?
Find ist relativ schnell und Du sparst Dir das Sortieren
]

Weil ich sie nicht kannte, muss ich bei nächster Gelegenheit ausprobieren.
Die Biselection -Methode hatte ich für eine einzelne Konfiguration (1-Mal Suchen) in SolidWorks vorgesehen.
Für alle Konfigurationen (X-Mal Suchen) habe ich bereits die Dictionary-Methode aktiv.
Allerdings dauert das einmalige einlesen aller Zeilen ca. 35 sec., was ich noch optimieren wollte.
Dein Vorschlag scheint mir in die gleiche Richtung zu gehen, allerdings ohne das vorherige Einlesen.

Danke für den Vorschlag, Grüße, Andi

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von Andi Beck an!   Senden Sie eine Private Message an Andi Beck  Schreiben Sie einen Gästebucheintrag für Andi Beck

Beiträge: 2537
Registriert: 02.10.2006

Firma: SW 2021-5.1 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2021-5.1
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 04. Apr. 2022 22:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von Andi Beck:
Weil ich sie nicht kannte, muss ich bei nächster Gelegenheit ausprobieren.

Hallo Klaus,   
wunderbar, funktioniert astrein und ist superschnell. 
Jetzt muss ich nicht mehr sortieren und das einlesen der ganzen Tabelle erübrigt sich auch.
Somit muss das Eingangsproblem nicht mehr gelöst werden.
Allerdings wäre es schon noch Interessant rauszufinden, ob es eine elegantere Methode gibt, außer dein vorheriges Umbenennen der "-" Zeichen.

Grüße, Andi 

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 05. Apr. 2022 12:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andi Beck 10 Unities + Antwort hilfreich

Hallo Andi,

Da mußt Du Dich vermutlich direkt an Microsoft wenden.

Meines Erachtens ignoriert Excel beim Sortieren einfach das Minuszeichen.
Anders kann ich mir nicht erklären dass "102-", "102B-" richtig sortiert wird ( 102 < 102B ),
"102-R", "102B-R" aber falsch ( 102BR < 102R )

Grüße
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2770
Registriert: 18.07.2012

HP Z400 Workstaion
CPU: Intel Xeon 6x 3,33GHz
GPU: NVIDEA Quadro 2000
RAM: 12 GB DDR3
Win 7 x64
CAD Hauptberuflich
-Solid Works 2015 SP4
-Creo Elements Direct Drafting (ME10)
DMS/PDM
-Pro.File V8 (8.4)
Simulation
-Simufact Forming 11.0
CAD Nebenberuflich
-Pro Engineer WF 3+4
-Creo Parametric 2.0

erstellt am: 05. Apr. 2022 15:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andi Beck 10 Unities + Antwort hilfreich

Hallo zusammen,

FYI: Die MS Hilfe sagt zum Sotieren folgendes

Zitat:
Apostrophe (') und Bindestriche (-) werden bis auf eine Ausnahme ignoriert: Wenn zwei Textzeichenfolgen bis auf einen Bindestrich identisch sind, wird der Text mit dem Bindestrich an die letzte Stelle sortiert.

daher ist das wohl "Standard". Die Lösungen die ich dazu im www gefunden habe waren alle die auch von Klaus vorgeschlagene Methode mit Ersezen von "-" durch " ".

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz