Vraag


  • RubenT86
  • Registratie: Maart 2021
  • Laatst online: 08-03-2021
Dag,

Ik heb een vraag omtrent een Excel formule, gebruikt in Office 365. Ik heb de volgende matrix-formule staan op werkblad "Overzicht" in het bereik E3:E14:

code:
1
2
3
4
5
6
7
8
9
10
11
=INDEX(
  Cliënten!$B$5:$B$87;
  KLEINSTE(
    ALS(
      VERSCHUIVING(Cliënten!$K$5:$AD$87;    0;    2 * (KOLOM() - 2);   83;    1) = "BB";
      RIJ(Cliënten!$B$5:$B$87) - MIN(RIJ(Cliënten!$B$5:$B$87)) + 1;
      ""
    );
    RIJ()-2
  )
)


Deze formule moet van het werkblad "Cliënten" alle waarden in kolom B ophalen, waarvan in kolom K de waarde in de corresponderende rij "BB" is.

Dit resulteert in de foutmelding "Een waarde in de formule heeft een onjuist gegevenstype".
Maar... wanneer ik KOLOM() vervang door het getal 5 (het kolomnummer van E3:E14 waar de formule in staat) dan doet hij het wel.


Hopelijk is er iemand die me hier iets duidelijkheid over kan verschaffen. :-)

Met vriendelijke groet,
Ruben

[Voor 0% gewijzigd door RubenT86 op 03-03-2021 10:57. Reden: Code werd niet goed getoont]

Alle reacties


  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 25-03 09:44

g0tanks

Moderator CSA
Volgens mij gaat het mis omdat de uitkomst van ALS() in het negatieve geval "" is. Dat is geen getal en gaat niet samen met KLEINSTE(). Probeer eens "" te vervangen door 0?

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


  • RubenT86
  • Registratie: Maart 2021
  • Laatst online: 08-03-2021
g0tanks schreef op woensdag 3 maart 2021 @ 11:05:
Volgens mij gaat het mis omdat de uitkomst van ALS() in het negatieve geval "" is. Dat is geen getal en gaat niet samen met KLEINSTE(). Probeer eens "" te vervangen door 0?
Dat werkt ook niet, ik blijf dezelfde fout houden.
Het vreemde is, KOLOM() retourneert als het goed is 5 (want kolom E), maar dat werkt dus niet. Maar als ik handmatig op die plek 5 invul, werkt het wel.

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Gooi je cel eens door de "Evaluate formula" die je bij formules kunt vinden. Zo kan je stap voor stap zien wat er gebeurt.

  • RubenT86
  • Registratie: Maart 2021
  • Laatst online: 08-03-2021
KabouterSuper schreef op woensdag 3 maart 2021 @ 13:23:
Gooi je cel eens door de "Evaluate formula" die je bij formules kunt vinden. Zo kan je stap voor stap zien wat er gebeurt.
Thnx, die kende ik nog niet. Werkt mooi die functie!
Ik heb hem geëvalueerd, en bij het stukje van KOLOM() doet hij precies wat je zou verwachten, hij retourneert dan 5. Alle andere stappen doorloopt hij ook prima, totdat bij de laatste stap aan wordt gekomen.
Hij evalueert hem tot
code:
1
INDEX(Cliënten!$B$5:$B$87; 24)
, en daarna zegt hij
code:
1
#WAARDE!
(wat dus de foutmelding is).

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
RubenT86 schreef op woensdag 3 maart 2021 @ 13:44:
[...]

Thnx, die kende ik nog niet. Werkt mooi die functie!

Hij evalueert hem tot
code:
1
INDEX(Cliënten!$B$5:$B$87; 24)
, en daarna zegt hij
code:
1
#WAARDE!
(wat dus de foutmelding is).
En in cel Clienten!B28 staat een waarde?

Edit: in je oorspronkelijke functie stop je drie argumenten in de buitenste INDEX, maar ik zie er nu maar twee. Klopt dat?
@g0tanks heeft helemaal gelijk.

[Voor 41% gewijzigd door KabouterSuper op 03-03-2021 14:10]


  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 25-03 09:44

g0tanks

Moderator CSA
Mocht je er niet uitkomen dan zou je als workaround INDIRECT in plaats van INDEX kunnen proberen.
code:
1
=INDIRECT("'"&"Cliënten"&"'!"&"B"&(5+24))

24 vervangen met de code vanaf KLEINSTE().
KabouterSuper schreef op woensdag 3 maart 2021 @ 13:59:
Edit: in je oorspronkelijke functie stop je drie argumenten in de buitenste INDEX, maar ik zie er nu maar twee. Klopt dat?
In het origineel zie ik volgens mij ook twee argumenten. Het een na laatste haakje dicht hoort nog bij KLEINSTE().

[Voor 47% gewijzigd door g0tanks op 03-03-2021 14:05]

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

RubenT86 schreef op woensdag 3 maart 2021 @ 10:56:
[...]
Deze formule moet van het werkblad "Cliënten" alle waarden in kolom B ophalen, waarvan in kolom K de waarde in de corresponderende rij "BB" is.

Dit resulteert in de foutmelding "Een waarde in de formule heeft een onjuist gegevenstype".
Maar... wanneer ik KOLOM() vervang door het getal 5 (het kolomnummer van E3:E14 waar de formule in staat) dan doet hij het wel.
Ik kan me voorstellen dat in een matrixformule dat gegoochel met kolom() en rij([bereik]) niet meer lekker loopt. Wat je niet ziet, is dat hij een kleinste moet bepalen uit een matrix en een waarde.

Kun je de formule uitleggen, want hij lijkt onnodig gecompliceerd voor wat je zegt wat hij moet doen.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • RubenT86
  • Registratie: Maart 2021
  • Laatst online: 08-03-2021
Lustucru schreef op woensdag 3 maart 2021 @ 15:55:
[...]

Ik kan me voorstellen dat in een matrixformule dat gegoochel met kolom() en rij([bereik]) niet meer lekker loopt. Wat je niet ziet, is dat hij een kleinste moet bepalen uit een matrix en een waarde.

Kun je de formule uitleggen, want hij lijkt onnodig gecompliceerd voor wat je zegt wat hij moet doen.
Nou, eerlijk is eerlijk, ik heb ooit delen van de formule van internet gehaald, dus het kan zijn dat het onnodig complex is. Wat hij moet doen is het volgende;

- In het werkblad 'Cliënten' staat een lijst met namen (kolom B) met bij elke naam een indeling in verschillende tijdsvakken (kolommen K-AD).
- In het werkblad 'Overzicht' moet een weekoverzicht gegenereerd worden, waarbij per tijdsvak direct te zien is wie er ingedeeld staan.

Als het me gelukt is heb ik twee screenshots meegestuurd, van beide werkbladen één. In de screenshot van werkblad 'Overzicht' heb ik in bereik C3:C14 de formule met KOLOM() gebruikt (wat drie retourneert), en bij bereik E3:E14 heb ik rechtstreeks het getal 5 gebruikt (van de 5e kolom).

Bereik C3:C14 moet in werkblad 'Cliënten' zoeken in kolom K naar alle rijen waarvan de waarde "BB" is, en daarbij de corresponderende naam (kolom B) teruggeven in de matrix.
Bereik E3:E14 moet vervolgens zoeken in kolom O en verder hetzelfde doen. Bereik G3:G14 in kolom S, etc.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Ik kan iig bevestigen dat de het gebruik van de kolomfunctie niet werkt in deze context. Wat wel werkt is verwijzing naar een cel met daarin de gewenste waarde voor de kolomverschuiving (die dan wel berekend mag worden met kolom()), maar direct in de matrixfunctie vindt Excel niet leuk.

Als alternatief zou je kunnen proberen of door ook op die plaats index te gebruiken (index(K5:AD100;0,Kolom(),1,1) je het werkend krijgt.

edit:
Ja dus. Dit werkt foutloos:


code:
1
=INDEX(A1:A8;KLEINSTE(ALS(INDEX(C1:E8;RIJ();KOLOM()-7)="BB";RIJ(C1:C8);999);RIJ()))

[Voor 16% gewijzigd door Lustucru op 03-03-2021 18:23. Reden: index voorbeeld toegevoegd]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee