1.9k Aufrufe
Gefragt in Tabellenkalkulation von b25812 Mitglied (509 Punkte)
Hallo,
Ich möchte gerne in einer Spalte Zahlen sortieren. Mein Problem ist, dass die Zahlen unterschiedlich gross sind.
z.b.
500
1022
5630
45864
2034
623650
32014
Die sortierung soll wie folgt aussehen.
1022
2034
32014
45864
500
5630
623650

Gibt es da eine Möglichkeit?
Mfg
Andi

10 Antworten

0 Punkte
Beantwortet von
Hallo Andi,

wie kommen denn die Werte in diese Spalte? Man könnte vor Eingabe der Daten die Spalte als Text formatieren, dann kann man anschliessend wie von dir gewünscht sortieren.
Sollte eine vorherige Formatierung nicht möglich sein, dann gäbe es noch (ausser VB) die Möglichkeit das ganze über eine Hilfsspalte zu machen. Nehmen wir mal an, in Spalte A stehen die zu sortierenden Daten, dann in B1 die Formel: =""&A1

Anschliessend die beiden Bereiche markieren und nach Spalte B sortieren.

CU Aliba
0 Punkte
Beantwortet von b25812 Mitglied (509 Punkte)
Danke für die schnelle Antwort. Die daten werden per Makro in die Tabelle eingespielt.

Range("A1:E42").Sort Key1:=Range("C2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

das wäre ein Ausschnitt aus dem Modul. Also wenn müsste es dort passieren.
Gruß Andi
0 Punkte
Beantwortet von
Hallo Andi,

VB ist jetzt nicht so mein Ding, aber den Teil, den du mir kopierst hast ist die Sortierung, vielleicht kannst du noch den Teil posten, der die Daten einfügt. Vielleicht kann man da eingreifen, um das ganze als Text einzufügen. Bzw, hast du schon mal probiert vor dem Import die entsprechende Spalte als Text zu formatieren und dann zu sortieren?

CU Aliba
0 Punkte
Beantwortet von b25812 Mitglied (509 Punkte)
Geht leider nicht, ist ein Daten Import von einem anderen Programm. Ist denn hier einer der sich mit VB auskennt und die Funktion einfügen kann?

Gruß Andi
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Andi,

bei mir funktioniert es so:

Option Explicit

Sub sortieren()
Dim rngC As Range
For Each rngC In Range("A2:A42")
With rngC
.NumberFormat = "@"
.Value = CStr(rngC)
End With
Next
Range("A2:E42").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

versuch es mal hiermit, wäre vielleicht noch zu optimieren
Daten in Spalte A


Sub Sortieren()
' Makro am 08.05.13
letztezeile = Range("A" & Rows.Count).End(xlUp).Row
For k = 1 To letztezeile - 1
For j = k + 1 To letztezeile

If Left(Range("A" & k).Value, 1) > Left(Range("A" & j).Value, 1) Then
hilfswert = Range("A" & k).Value
Range("A" & k).Value = Range("A" & j).Value
Range("A" & j).Value = hilfswert
Else
If Left(Range("A" & k).Value, 1) = Left(Range("A" & j).Value, 1) Then
zahl = Log(Range("A" & k).Value)
For i = 2 To zahl
If Left(Range("A" & k).Value, i) > Left(Range("A" & j).Value, i) Then

hilfswert = Range("A" & k).Value
Range("A" & k).Value = Range("A" & j).Value
Range("A" & j).Value = hilfswert
End If
Next
End If
End If
Next j
Next k
End Sub


Gruß

Helmut
0 Punkte
Beantwortet von b25812 Mitglied (509 Punkte)
Wenn das in Zeile c sein soll, muß ich die A nur gegen C tauschen?

Danke für die schnelle Antwort

gruß andi
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

so ist es, gilt auch bei @rainberg

Gruß

Helmut
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Andi,

hatte übersehen, dass die zu sortierenden Zahlen in Spalte C stehen.

Hier die Korrektur

Option Explicit

Sub sortieren()
Dim rngC As Range
For Each rngC In Range("C2:C42")
With rngC
.NumberFormat = "@"
.Value = CStr(rngC)
End With
Next
Range("A1:E42").Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von b25812 Mitglied (509 Punkte)
Danke für die schnelle Antwort, werde ich demnächst ausprobieren.

Gruß Andi
...