Leerzeichen zählen
#1
Hallo liebe Experten der VBA-Kampfkunst,

ich bin mal wieder der Ochse vorm Berg.

Ich habe in einer Spalte A von A1 bis A100 ganz normale Sätze stehen.
Wie üblich werden die einzelnen Wörter in den Sätzen dabei von Leerzeichen getrennt.
Wie kann ich möglichst schnell und einfach alle diese Leerzeichen in den Zellen von A1 bis A100 zählen?

Danke im voraus für eure Hilfe.
Top
#2
Moin!
Ohne VBA:
=SUMMENPRODUKT(LÄNGE(A1:A100)-LÄNGE(WECHSELN(A1:A100;" ";"")))

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#3
Hallo Lupy,

erst mal die Theorie.
Mit der Funktion LÄNGE ermittelst Du die Satzlänge.
Mit der Funktion WECHSELN kannst Du die Leerzeichen aus einem Satz entfernen.
Wenn Du nun die Originallänge mit der "WECHSEL"-Länge verrechnest, hast Du die Anzahl Leerzeichen. Bekommst Du das so gebacken?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#4
Hallo und Danke,

aber ich brauche wie immer eine VBA Lösung.
Ich denke es müßte doch irgendeine Funktion geben die so etwas macht.
Gehe ich in Excel auf Suchen und Ersetzen zeigt mir das Programm
von Microsoft sofort an wieviel Stellen ersetzt worden sind.
Daher mein Optimismus auf eine extreme kurze Schnelllösung.
Top
#5
Was ist an meiner Formellösung, die natürlich auch per VBA rechnen darf, keine "extrem schnelle Kurzlösung"?
Bekommst Du dies nicht umgesetzt?

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#6
Doch eine solche Umsetzung bekomme ich noch hin,

jedoch möchte ich die ermittelte Leerzeichenanzahl in

weiteren VBA Code einbauen. Hätte natürlich schon

ein paar Ideen wie man so etwas machen könnte.

Stichwort Split Funktion und dann Zeile für Zeile per

Schleife hochzählen. Mich interessiert aber die

effektivste Möglichkeit. Wenn's so eine Funktion

nicht gibt auch Ok. Aber dann schreibt mir das

bitte.
Top
#7
Hi!
Ist nicht böse gemeint, aber dies ist Killefit und ich nehme Dir die Umsetzung nicht ab.
Zwei Lösungen:
Code:
Sub Quatsch()
MsgBox Evaluate("=SUMPRODUCT(LEN(A1:A100)-LEN(SUBSTITUTE(A1:A100,"" "","""")))")
MsgBox [SUMPRODUCT(LEN(A1:A100)-LEN(SUBSTITUTE(A1:A100," ","")))]
End Sub

Statt MsgBox darfst Du natürlich auch eine Variable füllen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#8
Hallo,

per VBA könnte es so ausehen:


Code:
Sub leerzeichen()
 Dim i As Long, lngAnzahl As Long
 
 For i = 1 To 100
   If Cells(i, 1) <> "" Then lngAnzahl = lngAnzahl + UBound(Split(Cells(i, 1)))
 Next i
 MsgBox lngAnzahl
End Sub
Gruß Atilla
Top
#9
(03.01.2017, 18:14)atilla schrieb: per VBA könnte es so ausehen:
Sorry, aber chinesisch hatte ich doch auch nicht geschrieben.  :21:
Bei 100 Zellen sicherlich egal, aber bei größeren Bereichen?
Aber gut, ich teste mal …
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#10
Hallo Ralf,

was ist schlimm daran, mehrere Möglichkeiten aufgezeigt zu bekommen?

Wenn ich VBA einsetze, dann würde ich persönlich meinen Weg gehen.
Gruß Atilla
Top


Gehe zu:


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