Bin für jeden Tipp dankbar!!
Gruß Mac
Gruß Mac
Gruß Mac
folgendes Makro sortiert mit (einfachstem) BubbleSort-Algorithmus, der zum besseren Verständnis (für Dich) nicht 'verdichtet' wurde. Bitte *Option Compare Text* in der Hilfe zusätzlich lesen.
Sub SortierenInZelle()
Dim i As Long, x As String, ts1 As String, ts2 As String
With ActiveWorkbook.Worksheets("Sortieren")
x = Cells(1, 1).Text
For i = 1 To Len(x) ' Len(x) - 1 für aufsteigende Sort. (<)
ts1 = Left(Right(x, Len(x) - i), 1)
ts2 = Right(Left(x, i), 1)
If ts1 > ts2 Then ' "<" für aufsteigende Sort.
x = Left(x, i - 1) & ts1 & ts2 & Right(x, Len(x) - i - 1)
ts1 = "": ts2 = "": i = 0
End If
Next i
End With
End Sub
MfG Mario
*das* habe ich nun dem User und seinem Quotienten überlassen; wie wäre es mit:
Cells(1, 1) = x
oder:
Debug.Print x (in der Schleife, zeigt recht schön den Bubble-Effekt)
oder eben:
MsgBox x
und so weiter ...
Einen schönen und friedlichen 2. Advent wünscht Mario
gibt das Makro auch nur eine Fehlermeldung aus:
'Index außerhalb des gültigen Bereichs'...
Das kann doch nicht so schwierig sein, ich habe eine Tabelle mit alphanumerischen Werten, die innerhalb der jeweilen Zelle alphabetisch sortiert dargestellt werden sollen... *grummel*
Gruß Mac
kann eigentlich nicht schwierig sein:
Den Blattindex (Worksheet(x)) sollte man natürlich an eigene Gegebenheiten anpassen. Und wenn das Ganze für mehrere Zellen gelten soll, dann muss das in eine Schleife. Und wenn man das nicht kann, dann sollte man präzise und direkt anfragen, u.a. mit Nennung des Blattnamens, des interessierenden Zellbereiches u.ä. MfG Mario
Hinweis: Dies ist ein Forum zur Hilfe bei Excel-Problemen. Es ist kein Chat.
Hier ist es üblich, die Hilfestellung hinzuschreiben, es ist nicht erwünscht, das Archiv, in das alle Beiträge kommen, unnötig aufzublähen.
MfG Mario
Noch ein 3. Mal: EINE einzige (in Zahlen: 1) Zelle soll sortiert werden, wozu das Ganze also in eine Schleife oder Bereich angeben?? - Ach, was rede ich, ich glaube, ich geb's lieber auf.
Mac
ehe Du hier weiter spitze und selbstentlarvende Reden absonderst: Schau Dir mein Posting vom 07.12.2002 - 19:49:45 an. Schau es an! Dort wird genau EINE Zelle (nämlich Zelle A1), und zwar auf dem Tabellenblatt "Sortieren" sortiert. Es werden Dir sogar Notationen für ab- und aufsteigende Sortierungen gezeigt, eben weil dazu keine Aussage Deinerseits existiert. Und wenn das Tabellenblatt bei Dir anders heißt, dann musst Du es umbenennen oder den Namen an der entsprechenden Stelle im Quelltext eintragen. Und wenn das sortierte Ergebnis wieder in die selbe Zelle eingetragen werden soll, dann muss nach *Next i* die Zeile:
Cells(1, 1) = x
eingefügt werden.
Mario
Um den Inhalt einer Zelle alphanumerisch zu sortieren, kannst Du ein einfaches Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
Klicke im Menü auf Einfügen
und wähle Modul
, um ein neues Modul zu erstellen.
Füge den folgenden Code in das Modul ein:
Sub SortierenInZelle()
Dim i As Long, x As String, ts1 As String, ts2 As String
With ActiveWorkbook.Worksheets("Sortieren")
x = Cells(1, 1).Text
For i = 1 To Len(x) - 1
ts1 = Mid(x, i, 1)
ts2 = Mid(x, i + 1, 1)
If ts1 > ts2 Then
x = Left(x, i - 1) & ts2 & ts1 & Mid(x, i + 2)
i = 0
End If
Next i
Cells(1, 1) = x
End With
End Sub
Schließe den VBA-Editor und gehe zurück zu Excel.
Führe das Makro über Entwicklertools
> Makros
> SortierenInZelle
aus.
Dieses Makro sortiert den Inhalt von Zelle A1 auf dem Blatt "Sortieren".
Fehler: Index außerhalb des gültigen Bereichs
Fehler: Makro funktioniert nicht
Wenn Du kein Makro verwenden möchtest, kannst Du die Inhalte in eine Hilfsspalte kopieren, dort sortieren und anschließend wieder zurückkopieren. Das ist zwar umständlicher, jedoch eine gute Möglichkeit für Nutzer, die mit VBA nicht vertraut sind.
Angenommen, Du hast in Zelle A1 den Inhalt "BCA21". Nach Ausführung des Makros wird dieser Inhalt in "12ABC" umgewandelt, sortiert nach alphanumerischen Kriterien.
1. Kann ich das Makro für mehrere Zellen verwenden?
Ja, Du kannst das Makro anpassen, um über eine Schleife mehrere Zellen zu sortieren. Achte darauf, die entsprechenden Zellreferenzen zu aktualisieren.
2. Funktioniert das in jeder Excel-Version?
Das Beispiel sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen, wie Excel 2010 und später.
3. Was mache ich, wenn ich keine Makros verwenden möchte?
Du kannst die Daten in eine Hilfsspalte kopieren und dort die Sortierfunktion von Excel verwenden, bevor Du die sortierten Daten zurückkopierst.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen