3.7k Aufrufe
Gefragt in Tabellenkalkulation von korfuweb Mitglied (949 Punkte)
Nach Zahlen nicht nach Text sortieren!

Hallo Supportgemeinde,

Mal wieder was kniffliges – (zumindest für mich).

Will einfach nach Zahlen sortieren anstatt nach Text – diesbezüglich möchte ich mir einfach eine Hilfsspalte anlegen, die aus dem „Textwert einen Zahlewert macht.
Beispiel:
Habe folgende Werte in Spalte A:

SK-54345-00-01
O-102-00-01
P-3332-00-03

Nun soll in Spalte B einfach die alphanumerische Zeichen entfernt werden das das ganze so aussieht:
543450001
1020001
33320003

Hab schon verschienden Sachen mit TEIL(…;FINDEN….usw probiert komm aber irgendwie nicht richtig weiter.

Für Hilfe von den Profis hier wäre ich dankbar!

Gruß Volker

16 Antworten

0 Punkte
Beantwortet von korfuweb Mitglied (949 Punkte)
So erst mal Danke an alle, bin zwar noch ein wenig am tüfteln aber ohne eure Hilfe wäre ich wohl immer noch am Anfang.

Hab noch folgende Frage:

Also =--WECHSELN(TEIL(A1;FINDEN("-";A1)+1;99);"-";"") sucht ja nach dem ersten Minuszeichen !

Wenn ich jetzt nach dem ersten vorhandenen Buchstaben suchen will was muss ich anstatt "-" eingeben?

Danke für eure Hilfe
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Volker,

an welcher Stelle im String der erste Buchstabe steht, kannst Du mit folgender Matrixformel ermitteln

=VERGLEICH(FALSCH;ISTZAHL(--TEIL(A1;SPALTE(1:1);1));0)

FINDEN() ist dazu zu schwach über die Brust.

Gruß
Rainer
0 Punkte
Beantwortet von korfuweb Mitglied (949 Punkte)
@rainberg

Hallo Rainer,
hoffe Du liest das Ding noch mal !

Leider kann ich nicht mehr deine Beispieldatei Volker.xls abrufen und irgendwie hab ich das Ding auch auf meinem Rechner verschlammt.
Aber irgendie glaube ich hatte ich dort die Möglichkeit den Z.B. Wert HG-101-00-01 in 1010001 umzuwandeln.
auch wenn gefolgt von z.B. HG-101-00-01/BH.
Kannst Du mir da nochmals helfen?

Beziehungsweise kann mir irgendjemand noch mal nen Tip geben mit welcher Formel ich die Zahlen aus Werten wie:

G-123-00-01 soll werden: 1230001
G-124-00-03/BH soll werden 1240003
SK-24-00-01 soll werden 240001

Für Hilfe bin ich euch dankbar!

Gruß Volker
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi volker ^^

da ich nicht so der formelfreak bin,eine benutzerdefinierte function,die seperat ausfuehrbar ist wie auch mit beiliegenden makro und dessen aufruf

gruss nighty

Public Sub Beispiel()
Dim ZeilenA As Long
ZeilenA = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
ReDim intArray(ZeilenA, 1) As Variant
intArray() = Range("A1:A" & ZeilenA)
For Index = 1 To ZeilenA
intArray(Index, 1) = SumZahlen(intArray(Index, 1))
Next Index
Range("A1:A" & ZeilenA) = intArray()
End Sub

Function SumZahlen(Zellen As Variant) As String
Dim Zelle As Range
Dim ArrZeichen As Integer
Dim Schalter As Boolean
Dim ArrIndex As Integer
ReDim SpaArr(Len([Zellen])) As String
ArrIndex = 1
Application.Volatile
For ArrZeichen = 1 To Len([Zellen])
If Mid([Zellen], ArrZeichen, 1) Like "[0-9]" = True Then
SpaArr(ArrIndex) = SpaArr(ArrIndex) & Mid([Zellen], ArrZeichen, 1)
Schalter = True
End If
If Schalter = True And Mid([Zellen], ArrZeichen, 1) Like "[0-9]" = False Then
ArrIndex = ArrIndex + 1
Schalter = False
End If
Next ArrZeichen
SumZahlen = SpaArr(1) & SpaArr(2) & SpaArr(3)
End Function


beide codes gehoeren in ein allgemeines modul

das makro ist zur zeit auf spalte a bezogen

sollte die function seperat benutzt werden(ohne makro),ist diese bei function einfuegen(benutzerdefiniert) aufrufbar und das macro kann gelöscht werden
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi volker ^^

noch ergaenzend

zur zeit ist keine fehlerroutine praesent

sollten weniger oder mehr zahlenblocke als drei existieren,muesste ich es noch ein wenig veraendern(je nach wunsch ^^)

gruss nighty
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Volker,

sorry, habe Deine Nachfrage erst jetzt entdeckt.

Leider habe ich die damalige Datei auch nicht bei mir gespeichert.

Anbei noch mal die Muster und deren Ergebnisse,

G-123-00-01 --- 1230001
G-124-00-03/BH --- 1240003
SK-24-00-01 --- 240001
SK-54345-00-01 --- 543450001
O-102-00-01 --- 1020001
P-3332-00-03 --- 33320003

welche Du mit meiner Matrixformel aus AW2 bekommst.

=SUMME((TEIL(0&A1;KGRÖSSTE(WENN(ISTZAHL(TEIL(0&A1;ZEILE($1:$256);1)*1);ZEILE($1:$256);1);ZEILE($1:$256));1)*1)*10^(ZEILE($1:$256)-1))

Gruss
Rainer
...