Leerzeichen zählen
#21
Warum ?
Genügt A1:A1000 nicht ?
Dann kannst du das anpassen z.B A1:A12000.
Top
#22
@snb
Danke für deine Antwort.

Auch wenn das vielleicht pragmatisch nicht so wichtig ist, so würde mich das Ganze doch
von der Syntax her interessieren. Ist es möglich den Code allgemeiner, also
nach der letzten beschriebenen Zeile anzupassen? Und wenn ja, wie?

Wenn nicht, bitte schreibt mir das auch.
Danke.
Top
#23
Du hast meine Fragen noch nicht beantwortet.
Top
#24
Hallo,

wie es mit den eckigen Klammern gehen kann, weiß ich jetzt nicht aber so mit Range:

Code:
Sub M_snb()
Dim z%
z = Cells(Rows.Count, 1).End(xlUp).Row
  MsgBox UBound(Split(Join(Application.Transpose(Range("A1:A" & z)), "")))
End Sub

@snb
schöne knackige Variante, auf die ich gestern nicht kam.
Ich hatte ja einen Bereich in einem beschrieben aber das auslesen im Ganzen gelang mir nicht. Auf Transpose kam ich einfach nicht.
Gruß Atilla
Top
#25
Hallo,

so kleine speed-Wettbewerbe helfen, die Codes besser zu verstehen.

Mein Beitrag ist eine Variante mit RegEx, ist aber viel zu langsam.

Ich habe RPP63-Formel mit Atilla's verbunden, damit sind beide Ansätze gleich schnell.

(Die Zeiten sind auf einem uralt Laptop gemessen)


Code:
Sub M_snb()
An = Timer
  Debug.Print "snb: ", UBound(Split(Join([transpose(A1:A10000)], ""))), Timer - An
'1,2 sek
End Sub

Sub schreib()
Range("a1:a10000") = "Bin mal auf den Geschwindigkeits-Test mit deiner Lösung gespannt Ralf." _
& "Aber ich glaub du bist hier dann doch der Speedy Gonzales." _
& "Insofern schon mal meinen herzlichsten Dank."
End Sub

Sub leerzeichen()
Dim i As Long, lngAnzahl As Long, f
Dim Start As Double, Ergebnis As Long
Start = Timer

f = Range("a1:a10000")
For i = 1 To 10000
   lngAnzahl = lngAnzahl + UBound(Split(f(i, 1)))
Next i
Debug.Print "Attila Ergebnis ist: " & lngAnzahl & " in " & Format(Timer - Start, "0.000") & " Sekunden"
'0,156 sek
End Sub

Sub Quatsch()
Dim Start As Double, Ergebnis As Long
Start = Timer
Ergebnis = Evaluate("=SUMPRODUCT(LEN(A1:A10000)-LEN(SUBSTITUTE(A1:A10000,"" "","""")))")
Debug.Print "RPP63 Ergebnis ist: " & Ergebnis & " in " & Format(Timer - Start, "0.000") & " Sekunden"
'0,438 sek
End Sub

Sub RPP2()
An = Timer
f = Range("A1:A10000")
Erg = Evaluate("=sumproduct(len(f(0,1))-len(substitute(f(0,1),"" "", """")))")
Debug.Print "RPP2", Timer - An
'0,015625 sek
End Sub

Sub Fen()
An = Timer
Tx = Join([transpose(A1:A10000)], "")
With CreateObject("vbscript.regexp")
.Pattern = "\s"
.Global = True
.MultiLine = True
Set RR = .Execute(Tx)
Debug.Print "Fen", RR.Count, Timer - An

'For i = 1 To 10000
'    Set RR = .Execute(f(i, 1))
'    R = R + RR.Count
'Next i
'Debug.Print "Reg2", R, RR.Count, Timer - An
End With
'0,53 sek
End Sub

mfg
Top
#26
Code:
sub M_snb()
  msgbox ubound(split(join(application.transpose(sheet1.usedrange.columns(1)),"")))
End Sub

oder
 
Code:
sub M_snb()
  sheet1.usedrange.columns(1).name="sn"
  msgbox ubound(split(join([transpose(sn)],"")))
end sub
Top


Gehe zu:


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