Toon posts:

[Excel]Nested IF's

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik heb meer dan 7 IF`s nodig.. de eerste uitdrukking werkt:

{=QUANTILSRANG(WENN(E4:E500=Start!Q14;C4:C500;WENN(E4:E500=Start!Q15;C4:C500;WENN(E4:E500=Start!Q16;C4:C500;WENN(E4:E500=Start!Q17;C4:C500;WENN(E4:E500=Start!Q18;C4:C500;L23)))));Start!C14)*100}

Waarin ik dus verwijs naar cell L23:

met de rest van de IF`s:

WENN(E4:E500=Start!Q19;C4:C500;WENN(E4:E500=Start!Q20;C4:C500;WENN(E4:E500=Start!Q21;C4:C500;WENN(E4:E500=Start!Q22;C4:C500;))))


Maar dit werkt niet, heb al haakjes, puntkomma`s etc. op veel verschillende manieren geprobeerd..

Waar zit de fout?

Verwijderd

je eerste is een array, je tweede niet. kun je niet gewoon optellen?
code:
1
{=QUANTILSRANG(WENN(E4:E500=Start!Q14;C4:C500;0)+WENN(E4:E500=Start!Q15;C4:C500;0)+...}

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Tja, zo werkt het idd niet.
'Hellupp, doetutnie' is niet de bedoeling hier en daar komt het toch wel op neer zo. Krijg je een foutmelding, zo ja welke, wat moet de formule doen, zet je formule eens tussen [code] tags in je startpost en geef even aan wat je zelf als mogelijke oorzaak ziet. Kortom lees Algemene gedragsregels (Netiquette) eens door.

Met nog een tip: als je de formule selecteert en de wizard activeert kun je door in één deel van je formule te gaan staan precies zien waar wat mis gaat.

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


Verwijderd

Topicstarter
Ik heb zelf al gegoogeld en met de principes om de IF limiet te omzeilen toegepast. Zoals ik m`n probleempje gepost heb geef ik toch aan wat volgens mij de oplossing is?

Dat de een een array is maakt toch niets uit als ik een andere cell invoeg wordt dit toch opgenomen binnen die arrayfunctie, niet?

Ik kan zelf nog wel 3 dagen kl*ten, maar de experten die hier zitten zien het misschien meteen.. that`s all.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Nou, niet heus. Om te beginnen lijkt het me dat je helemaal niet zo'n berg if's nodig hebt. Met _heretic_, waarom tel je de boel niet gewoon op? Deze formule doet niets meer dan de cellen bij elkaar graaien die voldoen aan Q14,Q15,....Q22. Dat kan met één if :)

Wat ook niet te zien is, is of je die tweede functie als matrixfunctie hebt ingevoerd, en dan werkt het sowieso niet. M.a.w. hoe beter jij je probleem omschrijft, deste beter zal het antwoord ook zijn dat je krijgt. En tot slot: codetags '[ code ]...[/code]' zijn er voor om je posts beter leesbaar te maken.

offtopic:
en btw, welkom op GOT :)

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


Verwijderd

Topicstarter
OK.. ik heb de IF`s tot 1 IF teruggebracht, maar nu kom ik op het punt waarom ik zoveel IF`s in de eerste plaats wilde gebruiken, excel laat me geen cellnamen toevoegen:

code:
1
{=QUANTILSRANG(WENN(E4:E500=Start!N20;C4:C500);Start!C14)*100}


Dit werkt, maar nu wil ik de range waarover de formule Quartilrang werkt uitbreiden met willekeurige Cellen uit blad Start. Optellen werkt niet, want de formule Quartilrang heeft een range nodig, niet losse waarden.

Ik heb nu de waarden die ik wil invoegen een naam gegeven bv. deel1

code:
1
=Start!$N$14;Start!$N$20;Start!$N$49;Start!$N$63;Start!$N$82;Start!$N$90;Start!$N$133;Start!$N$69


de code wordt nu:

code:
1
{=QUANTILSRANG(WENN(E4:E500=deel1;C4:C500);Start!C14)*100}


Maar excel geeft de foutmelding #waarde!

Kan iemand mij hier aub bij helpen?

Voor de duidelijkheid, dit werkt dus wel, maar ben gelimiteerd aan 7 IF`s.... :'(

code:
1
{=QUANTILSRANG(WENN(E4:E500=Start!N20;C4:C500;WENN(E4:E500=Start!N133;C4:C500));Start!C14)*100}

[ Voor 14% gewijzigd door Verwijderd op 19-10-2005 15:58 ]


  • LievenD
  • Registratie: Juli 2005
  • Nu online
In Excel kun je maximaal 7 niveaus gebruiken.
Dus als je 7 haakjes na elkaar opent zonder er een te sluiten, zal je blijven foutmeldingen krijgen wat je ook doet. Dit is immers de limiet van Excel.

Als ik jou was zou ik proberen de formule ergens te splitsen en een deel in een andere cel zetten.
Tenzij jij de excel-limiet kan omzeilen natuurlijk ;)

Met andere woorden: het heeft dus niets met die IF's te maken, maar meer met de haakjes (of het aantal geneste functies)

[ Voor 30% gewijzigd door LievenD op 20-10-2005 09:59 ]


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
In vbs een functie ervan maken, dan kan je bijna net zo diep gaan als je wilt.

Verwijderd

Topicstarter
Ok, met VBA..

Daar heb ik niet veel kaas van gegeten, echter m`n hoofdberekening werkt zo onder VBA:

code:
1
2
3
4
5
sub regio()

T15.Range("H25").Value = Application.WorksheetFunction.PercentRank(T15.Range("c4:c500"), Start.Range("C14")) * 100

end sub


Hierbij worden alle waarden aan percentrank onderworpen in C4:C500 in Sheet T15

Wat ik hem wil laten doen is het volgende:

Percentrank een Range met namen laten gebruiken nl:
code:
1
Start.Range("P14:P22")


Kijken of deze namen in Sheet T15 in de kolom E4:E500 staan en zo ja, de bijbehorende waarden in kolom C4:c500 vervolgens gebruiken in de functie Percentrank.

Kan iemand mij een eindje in de goeie richting helpen?

  • Coffeemonster
  • Registratie: Juli 2000
  • Laatst online: 20-08 17:41
Verwijderd schreef op woensdag 19 oktober 2005 @ 15:45:
code:
1
{=QUANTILSRANG(WENN(E4:E500=deel1;C4:C500);Start!C14)*100}
Je vergelijkt hier een (matrix van) waarde met een range. Dat gaat natuurlijk nooit lukken (X = {A,B,C,X,Y,Z} levert niets op). Een oplossing hiervoor:
code:
1
=isfout(vergelijken(A1;deel1;onwaar))

Als A1 niet in deel1 voorkomt, levert dit #N/B op, wat een fout is, dus dan geeft de formule WAAR.

Look for something long enough and you will find it; look for something without understanding, and it will find you.
A normal day at the stock exchange


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

En dat zet je in een hulpkolom? Ik denk dat dat idd de -enige- oplossing is. :)
Alleen zou ik er dan nog een niet aan toevoegen:
stel: Kolom a1:a500 zijn de waarden, b1:b500 de bijbehorende labels, c1:c20 de voorwaarden,

dan in hulpkolom x:
code:
1
=niet(isfout(vergelijken(B1;$C$1:$C$20;0)))

en je percent.rang
code:
1
{=PERCENT.RANG(ALS(X1:X500;A1:A500);[waarde])}

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


Verwijderd

Topicstarter
Het werkt :)
Bedankt!!!

Nog 1 klein vraagje: is het mogelijk om een "named range" op te roepen met een verwijzing (bv. Start!C17, waar dan de naam van de range staat) zodat excel weet dat het de waarde niet letterlijk moet nemen, maar de cellen moet gebruiken die onder de named range vallen?

Maw, om het duidelijker te maken:

code:
1
 =niet(isfout(vergelijken(B1;deel1;0)))
vindt excel prima, maar

code:
1
 =niet(isfout(vergelijken(B1;Start!C17;0)))
Met in Start!C17 "deel1" neemt hij de letterlijke waarde van Start!C17 om te vergelijken...logischerwijze natuurlijk, maar is hier een commando voor om ipv letterlijk de rangenaam te gebruiken?

[ Voor 94% gewijzigd door Verwijderd op 21-10-2005 09:04 ]


  • Coffeemonster
  • Registratie: Juli 2000
  • Laatst online: 20-08 17:41
De functie INDIRECT(A1) levert een verwijzing naar de range op waarvan de naam in A1 staat. Dus je formule wordt:
code:
1
=niet(isfout(vergelijken(B1;Indirect(Start!C17);0)))

Look for something long enough and you will find it; look for something without understanding, and it will find you.
A normal day at the stock exchange


Verwijderd

Topicstarter
Je moet er maar opkomen!!! ;)

Ik moet zeggen de help functie is best behulpzaam vaak, maar je moet ook weten waar je op moet zoeken..

Mijn dank is groot
Pagina: 1