Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
300to304
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
300to304
300to304
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zellen Sortieren mit angehängter Zahl

Zellen Sortieren mit angehängter Zahl
02.09.2003 07:49:20
MarioK
Hallo suche leider immer noch nach einer mögligkeit per VBA Zellen automatisch sortieren zu lassen.

Ausgangspunkt ist folgende TABELLE

-----------A-------|-------B--|-C--|-D--|-E
1------Strasse1|------4---|-6--|-1A-|2A
2------Strasse2|----104-|-37-|-12-|-2

usw.

nach dem sortieren soll folgendes herauskommen

-----------A-------|-------B--|-C--|-D--|-E
1------Strasse1|------1A-|-2A-|-4--|-6
2------Strasse2|-------2--|-12-|-37-|-104

natürlich ohne die - zeichen, sollte nur zur besseren verständnis dargestellt sein
nur ich bekomms einfach nicht hin das die zahlen mit angehängten buchstaben mit sortiert werden,im moment hängt excel die zahlen mit den anghängten buchstaben einfach hinten an.

mir würde auch schon das sortieren für eine zeile reichen, das macro würd ich dann zur not einfach mehrmals für jede zeile ausführen, hat jemand eine idee ?

Gruss Mario

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Manchmal muss man von hinten ran ;-)
02.09.2003 08:30:03
sergiesam
Hi,

wenns so nicht geht, dann muss man halt tricksen:
Ich speichere einfach die Texte als Kommentar zu Zelle ab und trenne die Texte danach weg. Dann sortiere ich jede Zeile "normal als Zahl" und speichere anschließend die Texte wieder zurück.

Ich hoffe, es hilft dir, war wirklich eine kleine Denknuss zu knacken....

hier der Code:

Sub Sortieren()
Dim zahlen As Range, c As Range
'Suche alle Zahlen mit Texte und speichere die Texte als Kommentar zur Zelle
On Error Resume Next
Set zahlen = Range("C:F").SpecialCells(xlCellTypeConstants, 2)
On Error GoTo 0
If Not zahlen Is Nothing Then
For Each c In zahlen
c.ClearComments
c.AddComment Right(c, Len(c) - Len(Val(c) & ""))  'Text zwischenspeichern
c = Val(c)  'die reine Zahl der Zelle zuweisen
Next c
End If
'Sortiere jede Zeie in Spalte C-F spaltenweise
For Each c In Range("C:F").SpecialCells(xlCellTypeConstants, 1).Columns(1).Cells
Range(c, c.End(xlToRight)).Sort Key1:=c, Orientation:=xlLeftToRight, Header:=xlNo
Next c
'Zurückspeichern der Kommentartexte
For Each c In Columns("C:F").SpecialCells(xlCellTypeComments)
c = c & c.Comment.Text
c.ClearComments  'Lösche Kommentar wieder
Next c
Range("A1").Activate
End Sub

und hier das Beispiel:
https://www.herber.de/bbs/user/824.xls

Gruß aus Linz,
sam
Anzeige
AW: Manchmal muss man von hinten ran ;-)
02.09.2003 09:40:53
MarioK
Sieht spitze aus,
vielen dank dann kann ich ja nun endlich mit meiner tabelle weitermachen, hatte die hoffnung schon aufgegeben :)

Gruss aus Rommmerskirchen,
Mario
AW: Manchmal muss man von hinten ran ;-)
02.09.2003 10:21:50
MarioK
Ich kriegs leider nicht hin das makro auf weitere zeilen zu erweitern, kannst du mir noch erklären wo ich das einstellen muss das er z.b. 20 zeilen mit angehängten zellen sortiert ?, sieht so einfach aus, nur irgendwie find ich den ansatzpunkt nicht,
Vielen Dank im vorraus, Gruss Mario
AW: Manchmal muss man von hinten ran ;-)
02.09.2003 10:41:29
Otto Ecker
Hallo Mario,

hast Du eventuell eine Leerzeile zwischen Deinen Daten ? Nimm die dann raus.

Gruß Otto
Anzeige
AW: Manchmal muss man von hinten ran ;-)
02.09.2003 12:08:33
sergiesam
Hi

du kannst ja den Bereich selbst bestimmen: z.B. du möchtest die ersten 30 Zeilen sortieren. Er nimmt von dem Bereich immer die erste Spalte.

For Each c In Range("C1:F30").Columns(1).Cells
Range(c, c.End(xlToRight)).Sort Key1:=c, Orientation:=xlLeftToRight, Header:=xlNo
Next c
Gruß,
sam
AW: Manchmal muss man von hinten ran ;-)
02.09.2003 14:28:56
MarioK
Jo soweit war ich schon dahinter gestiegen, nur das ich c1:f30 nicht in das zurückspeichern hätte reinschreiben dürfen da sonst ein fehler auftritt.

Danke nochmals,
Gruss Mario
AW: Zellen Sortieren mit angehängter Zahl
02.09.2003 11:22:12
WernerB.
Hallo Mario,

markiere den zu sortierenden Zellbereich und starte dieses Makro.
Es arbeitet mit vorangestellten und ggf. angehängten Leerzeichen (Blanks) die nach der Sortierung wieder entfernt werden.
Es funktioniert nur, wenn die Zahlenwerte entweder gar keinen oder maximal nur einen Buchstaben angehängt haben; ansonsten müsste man es entsprechend anpassen.

Sub MarioK()
Dim c As Range
Dim Bereich As String, lo As String, ru As String
Dim zo As Long, zu As Long, i As Long
Dim sl As Integer, sr As Integer
Application.ScreenUpdating = False
Bereich = Selection.Address(False, False)
lo = Left(Bereich, InStr(Bereich, ":") - 1)             'links oben
ru = Right(Bereich, Len(Bereich) - InStr(Bereich, ":")) 'rechts unten
zo = Range(lo).Row - 1                                  'Zeile oben
zu = Range(ru).Row                                      'Zeile unten
sl = Range(lo).Column                                   'Spalte links
sr = Range(ru).Column                                   'Spalte rechts
For i = 1 To zu - zo
zo = zo + 1
For Each c In Range(Cells(zo, sl), Cells(zo, sr))
c.NumberFormat = "@"
If IsNumeric(c.Value) Then
c.Value = Right("          " & c.Value, 10) & " "
Else
c.Value = Right("          " & c.Value, 11)
End If
Next c
Range(Cells(zo, sl), Cells(zo, sr)).Sort Key1:=Cells(zo, sl), _
Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlLeftToRight
For Each c In Range(Cells(zo, sl), Cells(zo, sr))
c.NumberFormat = "General"
c.Value = WorksheetFunction.Trim(c.Value)
If IsNumeric(c.Value) Then c.Value = c.Value * 1
Next c
Next i
Application.ScreenUpdating = True
End Sub

Viel Erfolg wünscht
WernerB.

P.S.: Das Forum lebt auch von den Rückmeldungen der Fragesteller (siehe dazu Forums-FAQ)!
Anzeige
AW: Zellen Sortieren mit angehängter Zahl
02.09.2003 14:24:56
MarioK
Wunderbar, das klappt jetzt auch, denke zwar das ich keine zahl voranstellen muss aber mann weiss ja nie :)

Danke, Gruss Mario
AW: Zellen Sortieren mit angehängter Zahl
02.09.2003 15:01:44
WernerB.
Hallo Mario,

falls ich Dich verwirrt haben sollte:

Bei diesem Makro musst Du Deinen Werten aus Deinem Beispiel selbst nichts zusätzlich voranstellen.
Mit Deinen unverändert übernommenen Beispielwerten funktioniert es (zumindest bei mir) tadellos.
Das Makro verwendet intern (temporär) Leerzeichen, um die gewünschte Sortierung zu erzielen; diese Leerzeichen werden vom Makro nach der Sortierung wieder entfernt.
Gruß WernerB.
Anzeige
AW: Zellen Sortieren mit angehängter Zahl
02.09.2003 17:43:37
MarioK
Das ganze funktioniert auch,nur das problem ist das wenn ich leere zellen mit auswählem muss was sich zwangsläufig ergibt da nicht alle zellen beschrieben sind,erhalte ich in den leeren zellen eine 0.
Ich könnte zwar zeile für zeile auswählen,jedoch ist die sehr umständlich,alternativ kann ich ja alle nullen durch ein leerzeichen ersetzten,aber wenn ich das ersetzen dann auch noch ins makro machen könnte wärs natürlich noch einfacher.

Gruss Mario
AW: Zellen Sortieren mit angehängter Zahl
02.09.2003 17:58:45
MarioK
Halt, Danke habs schon selber gefunden

nur der vollständigkeit halber :
vorheriger code +
___________________________________
Range(Bereich).Select
Selection.Replace What:="0", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
___________________________________

End Sub

danke nochmals
Anzeige
AW: Zellen Sortieren mit angehängter Zahl
02.09.2003 18:31:20
MarioK
Holla, Kommando zurück, so gehts doch nicht,
jedesmal wenn ich eine zahl mit einer 0 habe, wie 70,80,102 oder ähnlich kickt der mir die null da raus, also mit der oberen funktion gehts nicht.
Brauche daher doch eine mögligkeit die 0er anders zu löschen oder aberdie in deinem makro erst garnicht aufkommen zu lassen.

Gruss Mario
AW: Zellen Sortieren mit angehängter Zahl
03.09.2003 10:56:34
WernerB.
Hallo Mario,

ändere Deinen Makroteil wie folgt:

Selection.Replace What:="0", Replacement:="", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False

Dann werden nur die Nullen eliminiert, die ganz alleine (ohne Leerzeichen) in einer Zelle stehen.
Gruß WernerB.
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige