Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Sortieralgorithmus für einen String gesucht
#1
Hallo Leute,

ich habe eine für mich bei meinen geringen VBA Kenntnissen komplizierte Aufgabe zu lösen.
Mein Ausgangsstring besitzt  beliebige Zahlenziffern von 1 bis 9 mit einer beliebigen Anordnung.
Diese Ziffern sollen nun ein bißchen sortiert werden. Der Ergebnisstring soll eine durchlaufende
und aufsteigende Nummerierung erhalten. Die Struktur und Position der einzelnen Ziffern soll
dabei im Ergebnis so sein, dass diese den Ausgangsstring wiederspiegeln.

Um das ganze besser zu verstehen hier einige Beispiele:

Ausgangsstring/Ergebnisstring
997788
112233

4446229999
1112334444

228886
112223

5555333335333333322211444411
1111222221222222233344555544

Wie bekomme ich so etwas mit VBA hin?
Antworten Top
#2
Hallo,

mit Sortieren hat das ja nicht sooo viel zu tun.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
Hallöchen,

habe das so verstanden:
Formel in B1 und C2 eintragen und nach rechts ziehen. Die 5 kann man durch eine Erweiterung der Formel vermeiden. In A2 könntest Du die Ergebnis-Teile zusammenfassen.

Arbeitsblatt mit dem Namen 'Tabelle1'
ABCDEFGHIJK
155447785544778
21122334555

ZelleFormel
B1=TEIL($A$1;SPALTE(A1);1)
C1=TEIL($A$1;SPALTE(B1);1)
C2=(B1<>C1)+B2
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Hallo Nutella,

hier mein Vorschlag mit einer UDF (selbstgeschriebene Funktion in VBA).



' **************************************************************
'  Modul:  Modul1  Typ = Allgemeines Modul
' **************************************************************


Option Explicit

Function ZahlenZuordnen(strQ As String) As String
 Dim i As Long, j As Long
 Dim strZ As String
 Dim varP As Variant
 Dim varT(1 To 9) As Variant
 Dim varZ As Variant
 
 For i = 1 To Len(strQ)
   varP = Mid(strQ, i, 1)
   varZ = Application.Match(varP, varT, 0)
   If IsError(varZ) Then
     j = j + 1
     varT(j) = varP
     strZ = strZ & j
   Else
     strZ = strZ & varZ
   End If
 Next i
 ZahlenZuordnen = strZ
End Function

Code eingefügt mit: Excel Code Jeanie

A
1
2997788
3112233
4112233
54446229999
61112334444
71112334444
8228886
9112223
10112223
115555333335333333322211444411
121111222221222222233344555544
131111222221222222233344555544
Formeln der Tabelle
ZelleFormel
A4=ZahlenZuordnen(A2)
A7=ZahlenZuordnen(A5)
A10=ZahlenZuordnen(A8)
A13=ZahlenZuordnen(A11)

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Nutella
Antworten Top
#5
Code:
Sub M_snb()
   [A1:A8].Offset(, 1) = [index("'" & right(rept("0",max(len(A1:A8))) &A1:A8,max(len(A1:A8))),)]
   Columns(2).Sort Cells(1, 2)
   [A1:A8] = [index("'" & right(B1:B8,len(A1:A8)),)]

   [B1:B8].ClearContents
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste