• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

"Als-functie" herhalen

Status
Niet open voor verdere reacties.

Kees Verhage

Gebruiker
Lid geworden
7 mrt 2009
Berichten
15
Ik wil met een 'Als-functie' de mogelijkheid hebben te kiezen uit argumenten a-b-c-d-e-f. Ik heb al een werkblad met een formule die kiest uit argumenten a en b. Als ik de formule voor argument b kopieer en aangepast aan de formule voor argument 'c' aan de formule voor 'a' en 'b' toevoeg, dan krijg ik een foutmelding.

Bijlage voorbeeldbestand.

Wat doe ik verkeerd?
Bij voorbaat dank voor de hulp,

groet,

Kees Verhage
 

Bijlagen

Kun je hiermee uit de voeten Kees?

Lay-out van rekenblad iets aangepast.

Of bedoel je iets anders.
 

Bijlagen

Zonder lay-outwijziging:

=VERT.ZOEKEN(A1;VERSCHUIVING(rekenblad!A1:B8;0;2*(CODE(B1)-65));2;ONWAAR)
 
'Als-functie..."

Kun je hiermee uit de voeten Kees?

Lay-out van rekenblad iets aangepast.

Of bedoel je iets anders.

In bladen die ik maak moet ik naar heel veel kolommen verwijzen, dan is VERT.ZOEKEN makkelijker om de kolommen te definieren lijkt mij. Ook moeten er kolommen gerelateerd worden die op het rekenblad ver uit elkaar liggen.


Dank voor je reactie en hulp.

Kees Verhage
 
Heb in het bestandje in cel C4 een indexfunctie voor je neergezet, misschien kan je er wat mee.

Succes.
Martin
 

Bijlagen

Ik had hier enkele berichten geplaatst maar heb die verwijderd omdat ik bij nader inzien denk dat dat niet de oplossing was die de vragensteller bedoelde. Ik ben er nu nog niet zeker van of ik de vragensteller goed begrijp, maar ik vermoed nu dat de oplossing hieronder is wat hij bedoelt.
Typ in C1 (en kopieer naar beneden in kolom C):
Code:
=ALS(OF($A1="";$B1="");"";ALS($A1=CODE($B1)-64;HERHALING($B1;2);"--"))
De resultaten op Blad1 in kolom C gelden dan voor het bereik c5-d8 op het rekenblad. Maar voor die resultaten is, zoals je ziet, het rekenblad niet nodig.
Wil je op Blad1 in kolom D de resultaten voor het bereik E5:F8 op het rekenblad, dan kun je bovenstaande formule naar rechts kopiëren, met dien verstande dat je van de 2 achteraan een 3 moet maken. In D1 op Blad1 komt dan :
Code:
=ALS(OF($A1="";$B1="");"";ALS($A1=CODE($B1)-64;HERHALING($B1;3);"--"))
Voor E1 en F1 wijzig je de 3 in resp. een 4 en een 5, zie bijlage.
 
ALS herhalen

Heb in het bestandje in cel C4 een indexfunctie voor je neergezet, misschien kan je er wat mee.

Succes.
Martin

Misschien was mijn voorbeeld iets te eenvoudig. Ik heb een voorbeeld bestand gemaakt van het hele systeem. Ik weet niet of ik met een indexfunctie kan doen wat ik wil.

Dank voor je moeite,


Kees
 

Bijlagen

ALS herhalen

Zapatr, je vraagt of je me goed begrijpt. Misschien was mijn voorbeeldbestandje te ver uitgekleed. Ik heb nu een vollediger voorbeeld gemaakt. Wil je hier nog eens naar kijken?

Met dank voor je moeite,

Kees
 

Bijlagen

Laatst bewerkt:
Kees,

Als je elke "sectie" een bereiknaam meegeeft kan je in R9 al een eenvoudige formule kwijt.
nl: =VERT.ZOEKEN(Q9;INDIRECT("Keuze_"&P9);2;0)

Ik heb de bereiknamen Keuze_A tm Keuze_F benoemd.
Voor de het niveau ben ik nog bezig voor je.

Succes
Martin
 
Heb de formule voor het niveau ook voor je.

=INDEX(INDIRECT("Keuze_"&P9);VERGELIJKEN(Q9;INDIRECT("Keuze_"&P9&"R");0);VERGELIJKEN(P3;INDIRECT("Keuze_"&P9&"K");0))

Voor de duidelijkheid heb ik het bestandje bijgevoegd.
Ik hoop dat dit gaat doen voor je wat je wilt.

Succes,
Martin
 

Bijlagen

Laatst bewerkt:
Ik kon het niet laten, heb de bereiknamen afgemaakt en je 2e "kolom" verder gevuld.
Nogmaals - ik hoop dat dit dan is waar je heen wilde.

Succes.
Martin
 

Bijlagen

Kees,
Je eerste voorbeeld heeft mij inderdaad op een verkeerd spoor gezet en bijgevolg is mijn eerste bijlage niet bruikbaar. In de bijlage bij dit bericht een alternatief.

Thankyou,
De bepaling van het niveau kan veel korter, omdat de kolommen waarin m3, e3, m4, enz. staan, al op voorhand bekend zijn en dus niet meer berekend moeten worden.

Kees,
Dat mijn formules toch nog lang geworden zijn, is voor het voorkomen van foutmeldingen bij onjuiste invoer, de echte berekening begint pas waar INDEX... begint.
Wat foutieve invoer betreft wordt gekeken naar:
- of 1 of beide cellen die voor invoer zijn bestemd, niet leeg worden gelaten;
- of, daar waar een letter moet worden ingevoerd, dat geen andere is dan a,b,c,d,e,f ;
- of de ingevoerde score niet hoger is dan 26 (pas dit getal aan als dat niet juist mocht zijn, op je werkblad 'kol' zijn de scores niet hoger dan 26). NB: op invoer van scores < 0 wordt niet gecontroleerd, maar dat kan natuurlijk eenvoudig worden toegevoegd.

Succes ermee.
 
@zapatr

Hier heb je natuurlijk gelijk in:
Thankyou,
De bepaling van het niveau kan veel korter, omdat de kolommen waarin m3, e3, m4, enz. staan, al op voorhand bekend zijn en dus niet meer berekend moeten worden.

Tot iemand besluit om alle M-en en E-en bij elkaar te plaatsen in het overzicht, vandaar toch deze oplossing.

Martin
 
Kees,
Dat mijn formules toch nog lang geworden zijn, is voor het voorkomen van foutmeldingen bij onjuiste invoer, de echte berekening begint pas waar INDEX... begint.
Wat foutieve invoer betreft wordt gekeken naar:
- of 1 of beide cellen die voor invoer zijn bestemd, niet leeg worden gelaten;
- of, daar waar een letter moet worden ingevoerd, dat geen andere is dan a,b,c,d,e,f ;
- of de ingevoerde score niet hoger is dan 26 (pas dit getal aan als dat niet juist mocht zijn, op je werkblad 'kol' zijn de scores niet hoger dan 26). NB: op invoer van scores < 0 wordt niet gecontroleerd, maar dat kan natuurlijk eenvoudig worden toegevoegd.

Succes ermee.[/QUOTE]

ZAPATR,

De formules die je me stuurde werken prima, het probleem dat ik nu tegenkom ligt meer bij mij, omdat ik niet goed kan nagaan wat de formules eigenlijk doen. Met VERT.ZOEKEN snap ik welke kolommen gedefineerd worden. Met de INDEX-functie zie ik dat niet.

Problemen die ik nu tegenkom zijn de volgende:
- de kolommen in blad "kol" zijn verschillend van lengte - ik had ze tot 26 ingekort omdat het bestand te groot werd om te verzenden - en loopt maximaal tot een score van 420.
Ik meende de formule als volgt te kunnen aanpassen:
=ALS(OF(K9="";L9="";L9>420);"";ALS(OF(CODE(K9)<97;CODE(K9)>102);"";INDEX(INDIRECT("kaart"&K9);L9+1;2))) - maar met scores boven de 26 krijg ik ##.
- Ik zie dat de in blad 'kol' de kolom 'score' bij leeskaart als font 'kaarta' meekrijgt. Waarom dat is snap ik niet. Ik heb wel font 'kaarta' doorgevoerd tot onderaan de kolom, maar dat maakt niet uit. En waarom hebben de score-kolommen van de andere leeskaarten dan ook niet 'fontb/c/d/e/f?
Kun je me uitleggen hoe ik het bereik van de formule groter maak>
- Er moeten wel scores van 0 kunnen worden ingevoerd. Hoe voeg je die mogelijkheid toe.

Zou je zo vriendelijk willen zijn om er nog eens naar te kijken? Ik heb nog niet met de INDEX-functie gewerkt en ik kom er zelf niet uit tot mijn spijt.

dank voor je moeite

Kees
 
Maak je geen zorgen, het komt allemaal goed; het is een klein probleem.
Ik heb een aantal gebieden gedefinieerd als kaarta, kaartb,….. kaartf
Maar die voldoen niet meer (helemaal) omdat je op blad 'kol' de gebieden hebt uitgebreid.
Het gebied kaarta omvat A4:M30 in het blad kol, dus kol!$A$4:$M$30. Je kunt dat zien (in Excel 2002 waar ik mee werk) door in het menu te kiezen: Invoegen - Naam - Definiëren. Daar zie je ook de andere namen staan. Verwijder alle namen die daar staan en definieer ze opnieuw als volgt:
Selecteer (heel precies!) in blad 'kol' het nieuwe gebied dat voor kaarta moet gaan gelden, dus bijv. A4:M250 . Als dat gebied geselecteerd staat, plaats dan de muisaanwijzer in het vak boven de kolomletter A (daar zie je normaliter de cel staan die geselecteerd is), wis wat daar staat en schrijf ervoor in de plaats: kaarta . Druk daarna op Enter. Doe hetzelfde voor het nieuwe gebied dat voor kaartb, kaartc, enz. moet gaan gelden, dus: gebied selecteren, muisaanwijzer in het vak boven de letter A plaatsen, en het bereik de juiste naam geven (dus na kaart a: kaartb, kaartc, kaartd, kaarte, kaartf). Let wel: om de formules nog te laten gelden, moet je elk bereik in dezelfde rij en kolom laten beginnen als de eerder door mij gedefinieerde bereiken, dus in resp. A4, O4, AC4, enz. Als je die bereiken correct hebt aangepast, zullen alle formules weer correct werken.
Succes ermee.
 
Aanvulling op wat ik hierboven schreef:
Je kunt de bereiken sneller aanpassen in het menu, dus door (in Excel 2002/2003) te kiezen: Invoegen - Naam - Definiëren, en daar te wijzigen. Ik dacht eerst dat dan elk bereik er 2 keer zou komen te staan, maar dat is niet zo.
Je vraagt hoe de indexfunctie werkt. In het kort gezegd:
=INDEX(BEREIK;Rijnr;Kolomnr) , dus bv. = INDEX(A4:M30;5;3) wat wil zeggen: geef weer wat er in het bereik A4:M30 in de vijfde rij en de derde kolom staat. Nu kun je dat bereik een naam geven, bv. kaarta, je kunt in plaats van A4:M30 dan die naam gebruiken. Het rijnummer en kolomnummer zijn niet altijd op voorhand bekend (maar in jouw werkblad wél). Als ze niet bekend zijn, moeten ze berekend worden en dat kan vaak met de functie VERGELIJKEN. Dat is waar Thankyou in zijn oplossing gebruik van heeft gemaakt.

Nog een toevoeging:
Het invoeren van een 0 als score vormt geen enkel probleem en is dus mogelijk.
 
Laatst bewerkt:
ALS herhalen

Aanvulling op wat ik hierboven schreef:
Je kunt de bereiken sneller aanpassen in het menu, dus door (in Excel 2002/2003) te kiezen: Invoegen - Naam - Definiëren, en daar te wijzigen. Ik dacht eerst dat dan elk bereik er 2 keer zou komen te staan, maar dat is niet zo.
Je vraagt hoe de indexfunctie werkt. In het kort gezegd:
=INDEX(BEREIK;Rijnr;Kolomnr) , dus bv. = INDEX(A4:M30;5;3) wat wil zeggen: geef weer wat er in het bereik A4:M30 in de vijfde rij en de derde kolom staat. Nu kun je dat bereik een naam geven, bv. kaarta, je kunt in plaats van A4:M30 dan die naam gebruiken. Het rijnummer en kolomnummer zijn niet altijd op voorhand bekend (maar in jouw werkblad wél). Als ze niet bekend zijn, moeten ze berekend worden en dat kan vaak met de functie VERGELIJKEN. Dat is waar Thankyou in zijn oplossing gebruik van heeft gemaakt.

Nog een toevoeging:
Het invoeren van een 0 als score vormt geen enkel probleem en is dus mogelijk.

Beste Zapatr,

Bedankt voor je reactie. Ik ga er morgen graag mee aan de slag.

Groet,

Kees
 
Kees,

Je hebt nu een aantal oplossingen, niet alleen die van mij maar ook die van zapatr
en beide werken. Probeer eens wat, probeer eens de formule's te begrijpen. Het gebruik van bereiknamen maken de formule leesbaarder. In iedergeval succes

Martin
 
In de bijlage bij dit bericht een aangepast Excelbestand. Enige verschil met het vorige is dat alle bereiken gedefinieerd zijn t/m rij 420 en de formules daaraan zijn aangepast. Wil je het netjes doen, dan zul je het bereik per leerjaar moeten definiëren met het voor elk leerjaar van toepassing zijnde aantal rijen. En dan natuurlijk ook per leerjaar in de formules het getal 420 aanpassen. Maar moeilijk is dat niet.
Kees Verhage zei:
- Ik zie dat de in blad 'kol' de kolom 'score' bij leeskaart als font 'kaarta' meekrijgt. Waarom dat is snap ik niet. Ik heb wel font 'kaarta' doorgevoerd tot onderaan de kolom, maar dat maakt niet uit.
En waarom hebben de score-kolommen van de andere leeskaarten dan ook niet 'fontb/c/d/e/f?
Die tekst begrijp ik niet zo goed.
Onder een font wordt doorgaans het lettertype en de opmaak daarvan verstaan, maar dat zul je niet bedoelen.
Op het blad 'kol' staat boven elke scorekolom een letter (a,b,...f), maar de cellen waarin die letters staan worden in de formules niet gebruikt. Ik heb die letters geplaatst toen ik de formules aan het samenstellen was, ik moest dan goed weten welke letter van toepassing was. Maar je mag die dus verwijderen.
Je andere vragen heb ik - denk ik - in mijn vorig bericht afdoende beantwoord. Mocht dat niet zo zijn, dan laat je het maar weten.
 
Kees,
als je vraag voldoende is beantwoord, markeer ze dan als 'opgelost' a.u.b. (rechts-onderaan).
Is iets nog niet duidelijk, laat het dan weten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan