Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1436to1440
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
Inhaltsverzeichnis

Zahl umwandeln mit VBA

Zahl umwandeln mit VBA
17.07.2015 09:06:08
alifa
Hallo,
ich möchte unterschiedlich lange Zahlen so umwandeln:
aus 6883 wird 162813 (1 Mal die 6; 2 Mal die 8; 1 Mal die 3)
aus 33333331 wird 7311 (7 Mal die 3; 1 Mal die 1)
aus 109 wird 111019 (1 Mal die 1; 1 Mal die 0; 1 Mal die 9)
Habe bis jetzt vergeblich versucht, im Netz etwas zu finden und selbst etwas zu basteln. Kann mir jemand dabei helfen?
VG Erhard

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahl umwandeln mit VBA
17.07.2015 09:42:04
Rudi
Hallo, Function alifa(lngTmp As Long) Dim i As Integer, oDic As Object, o Dim strTmp As String strTmp = CStr(lngTmp) Set oDic = CreateObject("scripting.dictionary") For i = 1 To Len(strTmp) oDic(Mid(strTmp, i, 1)) = oDic(Mid(strTmp, i, 1)) + 1 Next For Each o In oDic alifa = alifa & oDic(o) & o Next End Function
Gruß
Rudi

unterschiedliche Ergebnisse, was ist richtig?
17.07.2015 09:48:51
Tino
Hallo,
 ABC
1 TinoRudi
268838816281328164813
33333333173117311
4109111019111019

Formeln der Tabelle
ZelleFormel
B2=WENN(ISTZAHL(A2); Wandeln(A2); "")
C2=WENN(ISTZAHL(A2); alifa(A2); "")
B3=WENN(ISTZAHL(A3); Wandeln(A3); "")
C3=WENN(ISTZAHL(A3); alifa(A3); "")
B4=WENN(ISTZAHL(A4); Wandeln(A4); "")
C4=WENN(ISTZAHL(A4); alifa(A4); "")

Gruß Tino

Anzeige
AW: Zahl umwandeln mit VBA
17.07.2015 09:44:17
Tino
Hallo,
habe es mal so versucht.
Sub Test_Zahlen()
Dim ArData, n&
'Datenquelle
ArData = Tabelle1.Range("A2:A5")
For n = LBound(ArData) To UBound(ArData)
If IsNumeric(ArData(n, 1)) And Len(ArData(n, 1)) > 0 Then
ArData(n, 1) = Wandeln(ArData(n, 1))
End If
Next n
'Ausgabe
Tabelle1.Range("B2").Resize(UBound(ArData)).Value = ArData
End Sub
Function Wandeln(varValue)
Dim i%, ii%, nValue, ArValue()
ReDim Preserve ArValue(1 To Len(varValue), 1 To 2)
For i = 1 To Len(varValue)
nValue = Mid(varValue, i, 1)
If ii = 0 Then
ii = ii + 1
ArValue(ii, 1) = 1
ArValue(ii, 2) = nValue
Else
If ArValue(ii, 2) = nValue Then
ArValue(ii, 1) = ArValue(ii, 1) + 1
Else
ii = ii + 1
ArValue(ii, 1) = 1
ArValue(ii, 2) = nValue
End If
End If
Next i
For i = 1 To ii
Wandeln = Wandeln & ArValue(i, 1) & ArValue(i, 2)
Next i
End Function
Du kannst auch nur die Function Wandeln verwenden und im Excel eine Formel einsetzen.
 AB
26883162813
3333333317311
4109111019

Formeln der Tabelle
ZelleFormel
B2=WENN(ISTZAHL(A2); Wandeln(A2); "")
B3=WENN(ISTZAHL(A3); Wandeln(A3); "")
B4=WENN(ISTZAHL(A4); Wandeln(A4); "")

Gruß Tino

Anzeige
AW: Zahl umwandeln mit VBA
17.07.2015 11:07:41
ransi
HAllo,
Anderer Ansatz, gleiches Ergebniß...
Tabelle1

 ABC
16883162813 
2333333317311 
3109111019 
4   

Formeln der Tabelle
ZelleFormel
B1=alifa(A1)
B2=alifa(A2)
B3=alifa(A3)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit


Public Function alifa(zelle)
    Dim regex As Object
    Dim objMatch As Object
    Dim I As Integer
    Set regex = CreateObject("vbScript.regexp")
    With regex
        .Pattern = "(1+|2+|3+|4+|5+|6+|7+|8+|9+|0+)"
        .Global = True
        Set objMatch = .Execute(zelle)
        For I = 1 To objMatch.Count
            alifa = alifa & objMatch(I - 1).Length & Left(objMatch(I - 1).Value, 1)
        Next
    End With
End Function


ransi

Anzeige
guter Ansatz! oT.
17.07.2015 11:30:13
Tino

AW: Zahl umwandeln mit VBA
17.07.2015 13:32:32
alifa
Hallo,
vielen Dank an alle Beteiligten! Habe die kürzeste für mein Makro gewählt(Ransi). Die klappt vorzüglich.
Erhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige