Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

'programmeren' van voorwaardelijke statements in excel 2007

pc_freak17
4 antwoorden
  • Hoi allemaal,
    Ik ben bezig met wat statistieken in excel 2007 en nu wil ik iets specifieks hebben waarvan ik niet weet of het kan en zo ja, hoe het dan kan. Dit is de situatie:

    ik heb 2 kolommen van 10 rijen. De eerste kolom bevat een naam, de tweede kolom een getal.

    Wat ik wil is het volgende: ik wil de naam van hebben van de rij met het hoogste getal. Weet iemand hoe dat moet?! Ik kan wel het hoogste getal eruit halen (met max()) maar de naam die in diezelfde rij staat moet ik nu nog met de hand opzoeken. Voor dit voorbeeld is dat een klein klusje, maar voor grotere datasheets (waarvoor ik het wil gebruiken) kost dat behoorlijk wat meer moeite.

    Iemand een idee?!
  • Waarschijnlijk is het gemakkelijker je data iets anders te organiseren. Als je de nummers in de eerste kolom zet (bv. A) en de namen in de tweede (B) doet de formule
    =VLOOKUP(MAX(A:A);A:B;2;FALSE) wat je wilt. Ik ga er daarbij wel van uit dat de nummers uniek zijn, d.w.z. dat het hoogste nummer niet op 2 plaatsen kan voorkomen.
    Als er, zoals in je voorbeeld maar 10 rijen zijn en er in de kolom nog andere waarden voorkomen, die je niet bij je selectie wilt betrekken, kun je natuurlijk ook
    =VLOOKUP(MAX(A1:A10);A1:B10;2;FALSE) gebruiken.

    Als je de data niet anders kunt organiseren en de namen dus in kolom A en de nummers in B staan kun je de volgende formule gebruiken:
    =OFFSET(A:B;MATCH(MAX(B:B);OFFSET(A:B;0;1;ROWS(A:B);1);0)-1;0;1;1)

    Voor de eerste 10 rijen zou dat dus =OFFSET(A1:B10;MATCH(MAX(B1:B10);OFFSET(A1:B10;0;1;ROWS(A1:B10);1);0)-1;0;1;1) worden. Je ziet dat deze formule een stuk onoverzichtelijker is. het is dan ook een heel gepuzzel als je er iets in wilt veranderen.

    Ik werk trouwens in een Engelse Excel 2003, maar neem aan dat dit in E2007 ook zal werken.
  • Hartstikke bedankt!!! Het werkt perfect! Ik kan de kolommen inderdaad niet omdraaien dus ik gebruik de offset functie, maar daar heb ik nog een vraagje over:

    als ik nu bijvoorbeeld de namen in kolom A heb staan en de cijfers in kolom C (en iets anders in de kolom ertussen), hoe moet het dan?!
  • OFFSET werkt alleen bij aaneengesloten cellen. Je moet dus als je de namen in kolom 1 en de cijfers in kolom 3 hebt staan het hele gebied ABC opgeven (A:C) bij beide OFFSETs.
    Het grootste getal zoek je nu in kolom C, dus het wordt MAX(C:C).

    MATCH geeft de positie aan van dit maximale getal. Het zoekt MAX(C:C) in een gebied dat wordt gedefinieerd door de tweede OFFSET. Die moet dus zeggen dat in het gebied (A:C) in de derde kolom gekeken moet worden. Omdat dit gebied begint in A1 moet je 0 rijen naar beneden en 2 naar rechts, dus (A:C);0;2. Verder moeten in die kolom alle rijen bekeken worden -en die worden geteld door ROWS(A:C)- en 1 kolom.
    MATCH(MAX(C:C);OFFSET(A:C;0;2;ROWS(A:C);1);0)is dus het rijnummer van de positie van het grootste getal in kolom C.(De laatste 0 geeft aan dat er exact vergeleken moet worden).

    De eerste OFFSET geeft dus aan dat in het gebied (A:C) vanaf de eerste cel (A1) het aantal rijen dat MATCH aangeeft -1 naar beneden moet worden gegaan, zodat je terecht komt in de cel in kolom A met het rijnummer dat MATCH aangeeft. Dit is dus tevens het rijnummer van het hoogste getal in kolom C. Vandaar wordt niet meer door de kolommen verplaatst (0) en wordt alleen die cel en kolom weergegeven (1;1). (Die 0;1;1 zijn dus de laatse cijfers in de totale formule.)

    Die totale formule wordt dus:
    =OFFSET(A:C;MATCH(MAX(C:C);OFFSET(A:C;0;2;ROWS(A:C);1);0)-1;0;1;1) voor de totale kolommen A en C, of als je maar een beperkt gedeelte nodig hebt (alleen de eerste 10 rijen, zoals in je eerste voorbeeld:
    =OFFSET(A1:C10;MATCH(MAX(C1:C10);OFFSET(A1:C10;0;2;ROWS(A1:C10);1);0)-1;0;1;1)

    Ik neem aan dat je met deze uitleg de formule voor je eigen gebruik kunt aanpassen. Je hoeft overigens niet in A1 te beginnen. Misschien staan er koppen boven de kolommen, die je uiteraard niet wilt laten meetellen. Zolang je maar een aaneengesloten cellengebied invoert en bij MAX het totale kolomgebied van de nummers-kolom binnnen dat cellengebied gaat het goed.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.