Generieke formule
=LEN(TRIM(A1))-LEN(SUBSTITUTE(A1," ",""))+1
Samenvatting
Om het totale aantal woorden in een cel te tellen, kunt u een formule gebruiken die is gebaseerd op de LEN- en SUBSTITUTE-functies, met behulp van de TRIM-functie. In het weergegeven voorbeeld is de formule in cel C5, naar beneden gekopieerd,:
=LEN(TRIM(B5))-LEN(SUBSTITUTE(B5," ",""))+1
De formule retourneert het aantal woorden in cel B5.
Uitleg
Excel heeft geen speciale functie voor het tellen van woorden in een cel. Met een beetje vindingrijkheid kunt u echter een dergelijke formule maken met de functies SUBSTITUTE en LEN, met behulp van TRIM, zoals in het voorbeeld wordt getoond. Op een hoog niveau gebruikt deze formule de LEN-functie om het aantal tekens in de cel te tellen, met en zonder spaties, en gebruikt vervolgens het verschil om het aantal woorden te berekenen. Dit werkt, omdat het aantal woorden gelijk is aan het aantal spaties + 1, zolang er maar één spatie tussen elk woord staat.
Het eerste deel van de formule telt de tekens in cel B5, na het verwijderen van extra spatie:
=LEN(TRIM(B5)) // normalize space, count characters
Binnen LEN verwijdert de TRIM-functie eerst alle extra spaties tussen woorden of aan het begin of einde van de tekst. Dit is belangrijk, omdat eventuele extra spaties het aantal woorden doen afnemen. In dit geval zijn er geen extra spatie-tekens, dus TRIM retourneert de originele tekst rechtstreeks naar de LEN-functie, die 30 retourneert:
LEN("All Quiet on the Western Front") // returns 30
Op dit punt hebben we:
=30-LEN(SUBSTITUTE(B5," ",""))+1
Vervolgens gebruiken we de functie SUBSTITUTE om alle spatie-tekens uit de tekst te verwijderen:
SUBSTITUTE(B5," ","") // strip all space
Let op SUBSTITUTE is geconfigureerd om te zoeken naar een spatie (""), en te vervangen door een lege string (""). SUBSTITUTE zal standaard alle spaties vervangen. Het resultaat wordt rechtstreeks aan de LEN-functie geleverd, die de telling retourneert:
LEN("AllQuietontheWesternFront") // returns 25
LEN geeft 25 terug, het aantal resterende tekens nadat alle spatie is verwijderd. We kunnen de formule nu vereenvoudigen om:
=30-25+1 // returns 6
wat 6 als eindresultaat teruggeeft, het aantal woorden in cel B5.
Omgaan met lege cellen
De formule in het voorbeeld retourneert 1 zelfs als een cel leeg is of alleen ruimte bevat. Dit gebeurt omdat we 1 onvoorwaardelijk optellen, na het tellen van spaties tussen woorden. Om u tegen dit probleem te beschermen, kunt u de formule aanpassen zoals hieronder weergegeven:
=LEN(TRIM(B5))-LEN(SUBSTITUTE(B5," ",""))+(LEN(TRIM(B5))>0)
Merk op dat we 1 hebben vervangen door deze uitdrukking:
LEN(TRIM(B5))>0
Deze code snijdt eerst B5 af en controleert vervolgens de lengte. Als B5 tekst bevat, retourneert LEN een positief getal en retourneert de uitdrukking WAAR. Als B5 leeg is, of alleen ruimte bevat, retourneert TRIM een lege tekenreeks ("") naar LEN. In dat geval retourneert LEN nul (0) en retourneert de uitdrukking FALSE. De truc is dat WAAR en ONWAAR resulteren in respectievelijk 1 en nul als ze betrokken zijn bij een wiskundige bewerking. Het resultaat is dat de uitdrukking slechts 1 toevoegt als er tekst in B5 staat. Anders voegt het nul (0) toe. Deze logica kan ook als volgt worden geschreven met de IF-functie-instructie:
IF(LEN(TRIM(B5))>0,1,0)
en het resultaat zou hetzelfde zijn. De bovenstaande uitdrukking is gewoon compacter.