Formule versus VBA

In Excel kan met de functie SPATIES.WISSEN (Engels: TRIM) de spaties van een tekst in een cel gewist worden. In VBA bestaat ook de Trim-functie, maar die werkt net even wat anders en die geeft in een aantal situaties ook andere resultaten.

Als voorbeeld nemen we de tekst:

"     Jan    Piet      "

Het gebruik van de de Excel-functie:

=SPATIES.WISSEN("     Jan    Piet      ")

geeft als resultaat:

 "Jan Piet"

Het resultaat van de VBA-functie:

Trim("     Jan    Piet      ")

is echter:

 "Jan    Piet"

Het verschil is dat bij de Excel-functies SPATIES.WISSEN ook de overtollige spaties tussen de woorden worden verwijderd, terwijl bij de VBA-functie alleen de spaties aan het begin en aan het eind worden weggehaald. Om met VBA hetzelfde effect te krijgen als SPATIES.WISSEN kan gebruikt gemaakt worden van:

Application.Trim("     Jan    Piet      ")

In VBA bestaan naast Trim ook nog de LTrim en RTrim-functies, waarbij alleen de spaties aan de linker of aan de rechterzijde worden verwijderd.

 

Formules voor de VBA Trim-functies

Voor de VBA-functies Trim, LTrim en RTrim bestaan in Excel geen standaard functies die exact hetzelfde resultaat geven. De volgende formules kunnen hiervoor gebruikt worden:

Voor LTrim:

=DEEL(A1;VIND.SPEC(LINKS(SPATIES.WISSEN(A1);1);A1);LENGTE(A1))

Voor RTrim:

=LINKS(A1;MAX(INDEX((DEEL(A1;RIJ(INDIRECT("1:"&LENGTE(A1)));1)<>" ")*RIJ(INDIRECT("1:"&LENGTE(A1)));)))

En voor de VBA Trim-functie is dat een combinatie van beide bovengenoemde formules:

=DEEL(A1;VIND.SPEC(LINKS(SPATIES.WISSEN(A1);1);A1);MAX(INDEX((DEEL(A1;RIJ(INDIRECT("1:"&LENGTE(A1)));1)<>" ")*RIJ(INDIRECT("1:"&LENGTE(A1)));))-VIND.SPEC(LINKS(SPATIES.WISSEN(A1);1);A1)+1)

Met deze laatste formule worden dus alleen de spaties aan het begin en aan het eind verwijderd en blijven alle tussenliggende spaties behouden.