Hallo Freunde,
ich habe im Büro folgendes Problem. In Spalte A steht bei mir eine Artikelliste mit folgendem Format:
mehrstellige Zahl & Artikel
Die mehrstellige Zahl varriert dabei. Mal steht eine Zahl vor dem Artikel, mal auch 10 Zahlen.
Ich bräuchte einen VBA Code, der mir in Spalte B die Anzahl der Zahlen vor dem eigentlichen Artikel
anzeigt. Für euch sicherlich kein Problem, für mich leider mal wieder der sprichwörtliche Berg vor
dem ich stehe.
Vielen Dank im voraus.
Hallo,
probiere mal msgbox val(cells(1,1).value)
Mit Val liefert Excel-VBA den numerischen Wert am Anfang einer Zeichenkette.
Hallo Andre,
Deine Idee ist schon mal super. Doch wir brauchen noch eine kleine Ergänzung.
Mit einem Kollegen zusammen habe ich Deinen Code so umgeschrieben:
Code:
Sub Mehrstellig()
Debug.Print Val(Cells(5, 1).Value)
End Sub
Richtigerweise wird immer die Zahl ausgegeben. Wir brauchen aber die Länge des Zahlenstrings
also bei Ausgae 123 Länge 3 , 10000 Länge 5.
Das Problem setzen wir Len davor, also Len (Val(Cells(5, 1).Value)) geht's nicht.
Hallo,
dann so:
Code:
Sub Laenge()
Dim i As Long
For i = 1 To 100
Cells(i, 2) = Len(Str(Val(Cells(i, 1).Value))) - 1
Next
End Sub
Hallo Edgar,
danke für Deinen Lösungsvorschlag. Aufgrund der Typenunverträglichkeit die der Compiler meldet hatten wir
die Sache so gelöst:
Code:
Sub Mehrstellig()
'Länge einer mehrstelligen Zahl ermitteln
a = Val(Cells(5, 1).Value)
Debug.Print Len(a)
End Sub
Hallo Edgar,
danke für die Ergänzung, die Länge hatte ich doch glatt überlesen. Allerdings ist Deine Ergänzung nicht ganz korrekt, wenn führende Nullen vorkommen.
Ich vermute aber, dass das hier nicht relevant ist - wenn doch, müsste sich der Fragesteller nochmal melden, das bekommen wir - Excel sei dank
- auch noch gebacken.
Den Formelansatz habe ich mir noch nicht angeschaut.
Hallo,
mit führender Null z.B. so?:
Code:
Sub Laenge()
Dim i As Long, j As Long
Dim strT As String, strZ As String
For i = 1 To 2
strZ = Cells(i, 1).Value
If IsNumeric(strZ) Then
strT = strZ
Else
Do
j = j + 1
strT = Left(strZ, j)
Loop While IsNumeric(strT) And j < Len(strZ)
End If
Cells(i, 2).Value = Len(strT) + (j > 0)
j = 0
Next
End Sub
Gruß Uwe
Hallo Uwe und Andre,
hatte an die führende Null gar nicht gedacht ist aber ein guter und wichtiger Vorschlag. Gruß
von meinem Kollegen (hat mehr Ahnung als ich), der ist von eurem Forum begeistert.
Wir machen jetzt Feierabend.
Hallo!
Ohne VBA
Tabelle1 | A | B |
1 | 456789 hjk | 6 |
2 | 012 asdfgh | 3 |
Formeln der Tabelle |
Zelle | Formel | B1 | =FINDEN(" ";A1)-1 |
|
Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß
Wilfried