• 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.

Uitbreiden "ALS" functie

  • Onderwerp starter Onderwerp starter MBBS
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

MBBS

Gebruiker
Lid geworden
7 feb 2006
Berichten
269
Ik heb volgende formule :

=ALS(ISNB(VERT.ZOEKEN(B6;'1-Dag'!$B$6:$AT$100;41;0));99;VERT.ZOEKEN(B6;'1-DAG'!$B$6:$AT$100;41;0))

Nu zou ik graag nog volgende willen invoeren

Als B3 = 1 dan moet in de plaats van '1-Dag' de waarde van cel B4 komen te staan.
 
Uit het hoofdje:
Ervan uitgaande dat in B3 geen foutmelding kan voorkomen:

Code:
=ALS(B3=1;B4;ALS(ISNB(VERT.ZOEKEN(B6;'1-Dag'!$B$6:$AT$100;41;0));99;VERT.ZOEKEN(B6;'1-DAG'!$B$6:$AT$100;41;0)))

Ervan uitgaande dat B3 wel een fout kan bevatten:
Code:
=ALS(ISNB(ALS(B3=1;B4;VERT.ZOEKEN(B6;'1-Dag'!$B$6:$AT$100;41;0)));99;ALS(B3=1;B4;VERT.ZOEKEN(B6;'1-Dag'!$B$6:$AT$100;41;0)))

Richard
 
Ik denk dat je meer in deze richting moet zoeken:

Code:
=VERT.ZOEKEN(B6;ALS(B3=1;INDIRECT("B4&!$B$6:$AT$100;'1-Dag'!$B$6:$AT$100"));41;0)

Heb de formule niet echt getest maar zou het moeten doen.

Cobbe
 
Ook uit het hoofd :p

De bedoeling is dat in de formule de waarde '1-DAG' aangepast wordt naar de waarde van de cel B4
Dus als in de cel B4 "4-JAAR" staat dan moet de formule er als volgt uitzien... of toch dit effect hebben.


=ALS(ISNB(VERT.ZOEKEN(B6;'4-JAAR'!$B$6:$AT$100;41;0));99;VERT.ZOEKEN(B6;
'4-JAAR'!$B$6:$AT$100;41;0))
 
Ik denk dat je meer in deze richting moet zoeken:

=VERT.ZOEKEN(B6;ALS(B3=1;INDIRECT("B4&!$B$6:$AT$100;'1-Dag'!$B$6:$AT$100"));41;0)

Heb de formule niet echt getest maar zou het moeten doen.

Cobbe

Ik krijg een foutmelding 'ongeldige celverwijzing').

Als ik manueel de formule aanpas dan werkt ze wel, dus huidige formule werkt.

De sheet vermeldt in B4 bestaat ook.
 
OK, nu snap ik het beter.
Werken met INDIRECT gaat prima binnen een bestand, maar wanneer de naam van het tabblad een spatie bevat, moet de functie van Cobbe aangepast worden.
Code:
=VERT.ZOEKEN(B6;ALS(B3=1;INDIRECT("'"&B4&"'!$B$6:$AT$100");'1-Dag'!$B$6:$AT$100);41;0)

Deze keer wel gestest :-)

Richard
 
Blijkt toch niet helemaal te kloppen.

Ik maak een testbestandje aan.
 
Laatst bewerkt:
Bestandje bijgevoegd.

Ik heb het eerst geprobeerd via een macro

NaDAG1:
Worksheets(NAAM).Columns("F:F").Replace What:="DAG", Replacement:=Groep, LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

Dit werkt op pc maar niet op men laptop.

Daarom probeer ik het nu maar in het bestand zelf, dan ben ik zeker.
Als ik het aan de praat krijg tenminste.
 

Bijlagen

Beste MBBS,

Ik heb een paar vragen aangaande jouw uitleg in het voorbeeldbestandje.
1) D18: Als B3=1, dan moet er niet op tabblad "1-DAG" gezocht worden, maar op tabblad "1-GROEP". Tot zover helder, maar dan staat daarnaast Als B2<3, dan moet gezocht worden op tabblad "2-GROEP". Cel B2 is leeg in het voorbeeld??? Is het een tikfoutje en moeten alle voorwaarden op regel 18 naar B3 verwijzen?
2) Als alle voorwaarden op rij 18 naar cel B3 verwijzen, dan moet "ALS B3<3" toch eigenlijk zijn "ALS B3=2", want de voorwaarde "ALS B3=1" hebben we al gehad.
3) Je geeft in de formule in cel D7 een bereik op van B7:Z100, en daarna verandert het bereik naar B7:AT100? Wat moet het nou zijn? Niet zo heel spannend,maar toch verwarrend.
4) Komen er na 'Dag 5' nog meer kolommen?

Ervan uitgaande dat de cel in B3 correspondeert met de naam van het tabblad, en dat daar structuur in zit, werkt bij mij de volgende functie:

Code:
=ALS(ISNB(VERT.ZOEKEN($B7;INDIRECT("'"&ALS($B$3=1;"1-DAG";$B$3&"-GROEP")&"'!B7:Z100");5;0));99;VERT.ZOEKEN($B7;INDIRECT("'"&ALS($B$3=1;"1-DAG";$B$3&"-GROEP")&"'!B7:Z100");5;0))


Richard
 
Inderdaad, mijn voorbeeldje is slecht gemaakt :rolleyes:
Waarvoor mijn excuses.

Ik pas het aan.
 
Ik heb het bestandje aangepast.
Was inderdaad foutief.

Nieuw bijgevoegd.
Misschien dat de opzet voor velen een beetje raar lijkt, maar ben nog maar enkele maanden bezig met VBA en probeer voor alles een oplossing te vinden, soms nogal onorthodox maar het resultaat is er telkens wel.

Maar het blijft telkens een uitdaging, mijn macro's zijn wel véééél te lang en ik heb er waarschijnlijk veel te veel maar ik vind het leuk om telkens weer wat bij te leren en ik kan er hier en daar al wat verwijderen door met voorwaarden te werken.

Daar ik in mijn omgeving niemand heb die VBA machtig is blijft het maar behelpen met extra sheets, extra macros enz.
Maar ik probeer me telkens wel te behelpen en als ik er niet meer uitkom... dan is er nog altijd dit forum.

Zou het toch eens graag laten bekijken door iemand die al wat verder staat om eens wat indrukken te krijgen, van waar ik nog wat kan bijsturen.
Waarschijnlijk overal, maar ik probeer stap voor stap te gaan, macro's die ik zelf niet begrijp daar ben ik natuurlijk niks mee.

Als er iemand van een uitdaging houdt... geef maar een seintje.
 
Begrijp ik het goed dat kolom D altijd naar 1-DAG moet kijken, en dat kolom E in eerste instantie ook naar DAG-1 moet kijken, maar als B3 2 wordt, dan moet kolom E naar 2-GROEP kijken, terwijl kolom D nog steeds naar 1-DAG kijkt?

Richard
 
Dag Richard,

Vooreerst bedankt voor uw interesse in mijn probleem.

De sheet dag moet normaal leeg zijn, ik heb deze ingevuld om te testen.
Dus normaal staan alle waarden in de sheet TOTAAL op 99

Na wedstrijd 1 moet kolom D verwijzen naar 1-Groep (de rest naar 1-DAG, deze is dus leeg)
Na wedstrijd 2 de kolommen D en E naar 1-Groep (de rest naar 1-DAG)
Na wedstrijd 3 de kolommen D, E, F naar 1-Groep (de rest naar 1-DAG)
enz.

De bedoeling is dat naargelang de verlopen wedstrijd, de punten opgehaald worden.
Dus na wedstrijd 2 moeten de waarden opgehaald worden van 1, 2

Na wedstrijd 4 de waarden van wedstrijd 1, 2, 3 en 4
 
OK, zo komen we weer een stapje verder. Om iets in een formule te plaatsen is het van belang te regelmaat te vinden en ik denk dat we er bijna zijn.

Vraagje. Waarom heb je 2-GROEP, als na 1, 2 en 3 wedstrijden er telkens verwezen wordt naar tabblad 1-GROEP?
Ik neem aan dat het aantal wedstrijden in cel B3 komt te staan?

Groeten,

Richard
 
Ik zie dat het niet zo eenvoudig is als ik had gedacht, want ik ben nog iets vergeten...

Er zijn meerdere groepen :rolleyes:

Dus is het van belang dat ik ook die meeneem in de formule.

In Cel B3 staat het nr. van het aantal wedstrijden achter de rug en daarvan moeten de waarden worden opgehaald.

In cel B5 staat de naam van de groep.

1-Dag (is maar een verwijzing naar niks)

Dit moet dan naargelang de inhoud van deze cellen worden aangepast

Dus 1-Dag wordt dan 1-Junior of 1-Senior (er zijn nog meerdere groepen)

Hopelijk maak ik het nog niet ingewikkelder dan het als lijkt (of is).

Alvast bedankt voor uw interesse :thumb:
 

Bijlagen

Oh, je laatste post had ik niet gezien voordat ik dit bedacht had:
Code:
=ALS(EN($B$3>=1;KOLOM()=4);VERT.ZOEKEN($B7;'1-DAG'!$B$7:$AT$100;5;0);ALS($B$3>=KOLOM()-3;VERT.ZOEKEN($B7;INDIRECT("'"&KOLOM()-3&"-GROEP'!$B$7:$AT$100");5;0);99))

Ik heb je bestand aangepast en hopelijk conform jouw omschrijving. Het geeft wel het belang aan van alle variabelen doorgeven in een voorbeeldbestand, dus ook de structuur van je bestand, namen tabbladen etc.
Maar zo komen we er ook. :-)

Ik zal pas maandag weer op deze site komen.

Richard
 

Bijlagen

Laatst bewerkt:
Richard,

Dit lijkt er helemaal op.
Ik test het morgen nog eens grondig door.
Dit ziet er al een stuk beter uit.

Een grote merci is hier zeker op zijn plaats :thumb:
 
Nu maar even doorvragen zeker...

Als ik mijn layout van TOTAAL aanpas
(Zie bijgevoegd model)
Is de formule dan ook nog te gebruiken ?

Het is maar dat ik nu al maar onmiddellijk toekomstgericht moet gaan denken :)

Mag ik ook effe vragen...
Hoe werkt deze formule eigenlijk, ik meen te merken dat er met kolommen wordt gemerkt maar ik zie niet echt het verband.
 

Bijlagen

Hoi,

De functie KOLOM() geeft het kolomnummer van de cel waarin de functie staat. En daarmee valt weer te rekenen. In het eerste bestand had je de kolommen naast elkaar en kon ik overal 3 vanaf halen. In het nieuwe bestand werkt =KOLOM()-3 niet meer, omdat dan:
Kolom I geeft 6 in plaats van 2
Kolom L geeft 9 in plaats van 3
Kolom O geeft 12 in plaats van 4
etc.
Dus dat moet aangepast worden naar (KOLOM()-3)/3.

Bij deze de nieuwe functie voor alle cellen in het nieuwe bestand.
Code:
=ALS(F$3="DAG 1";VERT.ZOEKEN($B6;'1-DAG'!$B$7:$AT$100;5;0);ALS($B$3>=(KOLOM()-3)/3;VERT.ZOEKEN($B6;INDIRECT("'"&(KOLOM()-3)/3&"-"&$B$5&"'!$B$7:$AT$100");5;0);99))

Een functie bestaat uit argumenten. De functie INDIRECT maakt het mogelijk om variabel om te gaan met deze argumenten door tekstdelen aan elkaar te plakken. Ik neem aan dat je vertikaal zoeken wel kent.
Richard
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan