VBA: Cel vullen met functie wanneer andere cel een waarde bevat

Status
Niet open voor verdere reacties.

ame225

Gebruiker
Lid geworden
4 feb 2016
Berichten
35
Bekijk bijlage Ingrediënten_test.xlsmBeste,

Ik zou graag de functie =VERT.ZOEKEN($B2;Blad1!$D:$R;2;ONWAAR) in een bepaalde cel willen plaatsen op het moment dat een andere cel gevuld is.

De reden waarom ik dit vraag is omdat ik een document heb met heel wat data die ik wens op te zoeken. Momenteel zijn heel wat cellen gevuld met deze formule waardoor het bestand zeer groot geworden (12 MB) is en zeer traag werkt.
Het probleem hier is dat ik niet zeker ben dat alle formules wel zullen gebruikt worden, waardoor het nutteloos is dat heel wat cellen formules bevatten die waarschijnlijk niet zullen gebruikt worden.

In de bijlage zit en een kleiner bestand waarin het probleem duidelijk wordt.
1. Via de formulieren in het werkblad formulieren kan ik de werkbladen "ingrediënten" en "Recepten" vullen.
Ingrediënten: hierbij wordt de naam en de bijhorende allergenen (gluten en schaaldieren) ingevuld.
Recepten: Hierbij wordt de naam en de bijhorende ingrediënten ingevuld.

In het werkblad "Recepten" worden:

- in de kolommen F t.e.m. K de allergenen opgezocht via de formule verticaal zoeken
- In de kolommen M en N een totaal berekening gemaakt van de allergenen via de formule ALS. Dit kan door eerst in de kolommen O t.e.m. T het aantal keer nee, ja en sporen op te tellen.

Momenteel heb ik al deze formules gekopieerd t.e.m. rij 20.

Aangezien ik in totaal 14 allergenen heb en waarschijnlijk meer dan 1000 recepten met 20 mogelijke ingrediënten, worden er veel te veel formules ingevoerd. Hierbij ben ik dan ook niet zeker of ieder recept 20 ingrediënten zal hebben waardoor er veel onnodige formules worden ingevoerd.

Daarom mijn vraag of in het werkblad "recepten" pas een formule ingevoerd kan worden via vba, op het moment dat het recept werd aangemaakt met de daarbijhorende ingrediënten.

Alvast bedankt voor jullie hulp!Bekijk bijlage Ingrediënten_test.xlsm
 
Verwijder de rijen 6 t/m met laatste rij.
Maak van A1:T5 een tabel → tabel toevoegen met kopteksten.

Vanaf nu worden de formules automatisch aangemaakt.
 
Bedankt voor uw bericht en oplossing!

Dit werkt inderdaad goed, maar ik ben bang, dat naarmate de data gevuld wordt het bestand steeds trager zal werken.
Per lijn die er bij komt zouden er +- 300 cellen een formule krijgen terwijl er misschien een 100-tal nodig zijn. (afhankelijk van hoeveel ingrediënten er ingevoerd worden. Max. 20 ingrediënten * 14 allergenen en de daarbij horende berekeningsformules)

Het liefst zou ik hebben dat enkel de cellen, waarin een formule moet komen, gevuld worden.

Weet je hier een oplossing voor?
 
Zonder formules beter?
 

Bijlagen

  • Ingrediënten_test (2).xlsb
    33,5 KB · Weergaven: 47
Dag Harry,

Wanneer ik een recept probeer toe te voegen via het formulier voeg recept toe krijg ik volgende fout:

Fout 381 tijdens uitvoering:

Kan de eigenschap list niet verkrijgen. Ongeldige index voor eigenschappenmatrix.

Weet je wat het probleem is.
 
In het bestand wat ik plaatste, of in je eigen bestand met de overgenomen codes?
 
Test het zo maar eens weer.
 

Bijlagen

  • Ingrediënten_test.xlsb
    32 KB · Weergaven: 55
Dag Harry,

Heel erg bedankt! Dit werkt goed, maar ik zou nu een bijkomende vraag hebben ;)

Nu worden de gegevens als waarden geplakt? Zou het ook kunnen als resultaat van een formule geplakt worden. Zo zou het goed zijn mocht de formule verticaal zoeken daar komen te staan.
Waarom?
Omdat als een ingrediënt om een of andere reden moet wijzigen (bv. wegens een verandering van leverancier), dan zou dit dit in de recepten ook automatisch aangepast zijn...
Misschien lukt dit niet hoor, maar misschien weet jij daar wel raad mee...

Alvast bedankt voor de moeite!
 
Hoi,

Waar zouden die formules moeten komen?
 
Op de plaats waar nu de waardes gezet worden... zodanog dat hij de gegevens uit het werkblad ingredienten haalt met de functie verticaal zoeken
 
De cirkel is weer rond lijkt het.
 
Ik dacht er al net zo over, vandaar de vraag maar eens. :shocked:
 
Beste,

Wat ik bedoel:

Je hebt 2 werkbladen:
1. Ingrediënten: Hier worden de ingrediënten opgelijst.
2. Recepten: Hier worden de recepten met de daarbij horende recepten opgelijst.

Nu worden de berekeningen goed uitgevoerd met de code die u hebt ingevoerd, maar stel:

Het ingrediënt pompoen wijzigt. Plots bevat pompoen wel "sporen" van gluten, terwijl eerder "neen" werd ingevoerd.
Nu zou ik graag dit ingrediënt wijzigen, maar ik zou ook graag hebben dat alle recepten waarin het ingrediënt pompoen gebruikt werd ook wijzigen en opnieuw berekend worden.

Daarom dacht ik dat de functie verticaal zoeken gemakkelijk zou zijn, omdat dan steeds de waarde die in het werkblad "ingrediënten" staat bij het betreffende ingrediënt wordt opgezocht.

Ik hoop dat dit mijn probleem wat verduidelijkt.

Groeten,
 
Hallo,

Ik begreep al best van je probleem, maar dan heb je toch weer al die formules waar het bestand zo traag van wordt?
 
Het grootste probleem dat het bestand zo traag werd is dat ik de formules moest plaatsen bij alle mogelijke ingrediënten in de recepten. Aangezien niet alle recepten, 20 ingrediënten bevatten ( de meeste bevatten ongeveer 10 ingrediënten) was het al zeer zwaar omdat overal formules ingevuld zijn die niet gebruikt zullen worden. Nu ik vind de oplossing die je aanboodt zeker bruikbaar!
Misschien moet ik trachten de receptuur de herberekenen wanneer een ingrediënt gewijzigd wordt, maar dat zal ook zoeken worden! ;)

Alvast heel erg bedankt voor de hulp.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan