Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
440to444
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
440to444
440to444
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

String ´zerlegen

String ´zerlegen
17.06.2004 17:17:37
Ralf
Hi zusammen, ich habe folgendes Problem, ich möchte einen String zb. "1234"
folgendermaßen zerlegen lassen, so dass er mir alle Kombinationsmöglichkeiten anzeigt:
1234
123-4
12-34
12-3-4
1-234
1-23-4
1-2-34
1-2-3-4
Hab dazu auch schon nen ganz netten Code geschrieben, funktioniert aber leider nicht ganz (Problem ist, ich steh auf Kriegsfuß mit rekursiven Algos, ist hier aber leider angebracht):
Aufruf durch:
Sub test()
dim text as string
dim AllIntegrations() as Variant
Redim AllIntegrations(1 to 8)
text="1234"
cvar=0
Call SplitIntegrations(text, "")
End Sub
Eigentlicher Algo:

Private Sub SplitIntegrations(todo As String, Integr As String)
Dim tex As String
tex = todo
For i = 1 To Len(tex)
firstpart = Left(tex, Len(tex) + 1 - i)
IntegrationText = Integr & firstpart & "-"
If Len(firstpart) < Len(tex) Then
secondpart = Right(tex, i - 1)
Dim ütex As String
ütex = secondpart
Call SplitIntegrations(ütex, IntegrationText)
Else
cvar = cvar + 1
AllIntegrations(cvar) = Left(IntegrationText, Len(IntegrationText) - 1)
IntegrationText = Left(IntegrationText, Len(IntegrationText) - Len_
(secondpart))
End If
Next
End Sub

Ausgeben tut er aber folgendes:
1234
123-4
12-34
12-33-4
1-234
1-223-4
1-223-42-34
1-223-42-33-4
Wer kann mir weiterhelfen? Ist wahrscheinlich nicht allzu schwer, hab aber schon zuviel ausprobiert, und seh den Wald vor lauter Bäumen nicht mehr
Gruß, Ralf

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String ´zerlegen
Reinhard
Hi ralf,
direkt weiterhelfen kann ich dir nicht aber ich habe hier einen Code, ich nehm an auch hier aus dem Forum oder durch google, der alle Kombinationen darstellt.
Leider ist er sehr tricky, bzw. zu schwierig für mich ihn auf deine Sache umzuändern.
Probier halt mal ihn anzupassen.
Schreibe in A1 zb:
abcdef
und starte Test(), in Spalte B erscheinen alle Kombinationen.
Gruß
Reinhard
Sub Test()
Dim i As Long
Dim src As Range
Dim dest As Range
Dim y() As String
Set src = Range("A1")
Set dest = Range("B1")
ReDim y(1 To 1)
y(1) = ""
Do Until IsEmpty(src)
Include Left(src.Text, 1), y
Set src = src.Offset(1, 0)
Loop
For i = 1 To UBound(y)
dest(i, 1).Value = y(i)
Next i
dest.Resize(UBound(y)).Sort dest
End Sub

Private Sub Include(x As String, y As Variant)
Dim i As Long
Dim j As Long
Dim m As Long
Dim n As Long
m = UBound(y)
n = Len(y(1))
ReDim Preserve y(1 To m * (n + 1))
For i = n To 0 Step -1
For j = 1 To m
y(i * m + j) = Left(y(j), i) & x & Right(y(j), n - i)
Next j
Next i
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige