Ik probeer iets te doorgronden.
Ik ben bekend met het gebruik van arrayformules.
In mijn voorbeeld wil ik checken of de oneven karakters van een string een letter zijn of niet.
Stap voor stap:
Als je niet de oneven karakters checkt, maar de eerste 10, dan gebruik je
(CODE(MID(L13,ROW(1:10),1))<=122
(en zelfde maar dan >=97)
Als je dit ctrl+shift+entered en je evaluate de formule dan zie je dat er dit van wordt gemaakt:
(CODE(MID(L13,{1;2;3;4;5;6;7;8;9;10},1))<=122
Als ik vervolgens om alleen de oneven karakters te checken letterlijk deze code gebruik:
(CODE(MID(L13,{1;3;5;7;9},1))<=122
Dan werkt dat prima en hoef ik niet ctrl+shift+enter te gebruiken. Vanwege de {} is het automatisch een array, ook als ik gewoon enter druk.
Tot zover top, begrijpelijk.
Nu moet ik alleen ook een errorcheck doen voor het geval er geen 9 karakters in de string zijn, als er maar 3 zijn dan krijg je als resultaat {code;code;#value;#value;#value}.
Als ik dan deze code gebruik:
IFERROR(CODE(MID(L13,{1;3;5;7;9},1))<=122,TRUE
Dan gaat dit niet goed tenzij ik nu wél ctrl+shift+enter gebruik.
Doe je dit niet dan verwerkt hij eerst {code;code;value;value;value} als groep en dat wordt {value}. Vervolgens maakt hij er TRUE van door de iferror. Dit is niet goed want als er een false tussen zat wordt die overschreven naar true.
De Vraag
Ik wil geen gebruik maken van ctrl+shift+enter. Waar zou ik nu de {} moeten plaatsen om te zorgen dat de iferror snapt dat hij met een array te maken heeft?
Ik ben bekend met het gebruik van arrayformules.
In mijn voorbeeld wil ik checken of de oneven karakters van een string een letter zijn of niet.
Stap voor stap:
Als je niet de oneven karakters checkt, maar de eerste 10, dan gebruik je
(CODE(MID(L13,ROW(1:10),1))<=122
(en zelfde maar dan >=97)
Als je dit ctrl+shift+entered en je evaluate de formule dan zie je dat er dit van wordt gemaakt:
(CODE(MID(L13,{1;2;3;4;5;6;7;8;9;10},1))<=122
Als ik vervolgens om alleen de oneven karakters te checken letterlijk deze code gebruik:
(CODE(MID(L13,{1;3;5;7;9},1))<=122
Dan werkt dat prima en hoef ik niet ctrl+shift+enter te gebruiken. Vanwege de {} is het automatisch een array, ook als ik gewoon enter druk.
Tot zover top, begrijpelijk.
Nu moet ik alleen ook een errorcheck doen voor het geval er geen 9 karakters in de string zijn, als er maar 3 zijn dan krijg je als resultaat {code;code;#value;#value;#value}.
Als ik dan deze code gebruik:
IFERROR(CODE(MID(L13,{1;3;5;7;9},1))<=122,TRUE
Dan gaat dit niet goed tenzij ik nu wél ctrl+shift+enter gebruik.
Doe je dit niet dan verwerkt hij eerst {code;code;value;value;value} als groep en dat wordt {value}. Vervolgens maakt hij er TRUE van door de iferror. Dit is niet goed want als er een false tussen zat wordt die overschreven naar true.
De Vraag
Ik wil geen gebruik maken van ctrl+shift+enter. Waar zou ik nu de {} moeten plaatsen om te zorgen dat de iferror snapt dat hij met een array te maken heeft?