Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Leerzeichen zählen
#21
Warum ?
Genügt A1:A1000 nicht ?
Dann kannst du das anpassen z.B A1:A12000.
Antworten 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.
Antworten Top
#23
Du hast meine Fragen noch nicht beantwortet.
Antworten 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
Antworten 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
Antworten 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
Antworten Top


Gehe zu:


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