Registriert seit: 18.02.2016
Version(en): 2007
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?
Registriert seit: 11.04.2014
Version(en): Office 365
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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' |
| A | B | C | D | E | F | G | H | I | J | K |
1 | 5544778 | 5 | 5 | 4 | 4 | 7 | 7 | 8 | | | |
2 | | 1 | 1 | 2 | 2 | 3 | 3 | 4 | 5 | 5 | 5 |
Zelle | Formel |
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)
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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 | |
2 | 997788 |
3 | 112233 |
4 | 112233 |
5 | 4446229999 |
6 | 1112334444 |
7 | 1112334444 |
8 | 228886 |
9 | 112223 |
10 | 112223 |
11 | 5555333335333333322211444411 |
12 | 1111222221222222233344555544 |
13 | 1111222221222222233344555544 |
Formeln der Tabelle |
Zelle | Formel | 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:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Nutella
Registriert seit: 29.09.2015
Version(en): 2030,5
04.02.2018, 21:32
(Dieser Beitrag wurde zuletzt bearbeitet: 04.02.2018, 21:32 von snb.)
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