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

If Then, complexe formule meerdere tabellen

Status
Niet open voor verdere reacties.

Jurjen S

Gebruiker
Lid geworden
18 mei 2009
Berichten
13
Goedendag,

Ik heb weer een leuke uitdaging voor jullie.

In de tabel voorbeeld 1 welke het bovenste stuk is uit een veel grotere tabel, heb ik alleen de bovenste paar regel geknipt en een paar gegeven handmatig aangevuld voor het idee.

In cel AC30 wordt een risico getal uitgerekent op basis van alles wat daar voor op de regel ingevuld is. Dit alles heeft te maken met maximale leeftijden van kunststoffen onder invloed van chemicalien, maar dat terzijde.

Nu zijn er echter nog 2 extra factoren voor dat getal. Afhankelijk van het medium speelt leeftijd en temperatuur een extra rol.

Als nu het medium onder F30 voorkomt in de lijst die bij A9 tm A24 staat EN de temperatuur in i30 hoger is dan de temperatuur genoemd in kolom B achter het betreffende medium. moet het risico getal onafhankelijk van de berekening die al in cel AC 30 staat op maximaal gezet worden, in dit geval is dat 16.

Er zijn echter nog veel meer stoffen mogelijk dan genoemd in A9 tm A24 dus er moet iets extra bij komen in de formule in cel AC30 wat alleen gebruikt wordt als het medium voorkomt in A9 tm A24 en de leeftijd en temperatuur hoog genoeg zijn.




Alvast heel erg bedankt weer voor de moeite.
 

Bijlagen

Ik was zelf alweer gaan klooien. Kwam op een volgende forumule uit, echter daar lijkt een fout in te zitten. Want ik kom altijd op de IF waarde uit.

Verder zit ik dan nog steeds met het probleem dat dit maar voor 1 medium zou werken en niet voor alles uit de lijst.

Code:
=IF(AND(I30>=B9, L30<C9,F30=$A$9),16,INDEX($F$1:$J$6,INT(AB30/10)+3,1+HLOOKUP(P30,$F$1:$J$2,2,FALSE)))
 
Ik was zelf alweer gaan klooien. Kwam op een volgende forumule uit, echter daar lijkt een fout in te zitten. Want ik kom altijd op de IF waarde uit.

Verder zit ik dan nog steeds met het probleem dat dit maar voor 1 medium zou werken en niet voor alles uit de lijst.

Code:
=IF(AND(I30>=B9, L30<C9,F30=$A$9),16,INDEX($F$1:$J$6,INT(AB30/10)+3,1+HLOOKUP(P30,$F$1:$J$2,2,FALSE)))

Nadat ik alles naar mijn NL versie heb omgezet (functienamen en komma's vervangen door puntkomma, komt er zonder foutmelding 4 uit deze formule.

Wat zou het moeten zijn?
 
Ik zou een complexe formule eerst maken door de subdelen in een aparte cel ergens anders uit te rekenen en te kijken of daar problemen in optreden. In een voor het werkblad verder verborgen gedeelte of verborgen hulpkolom.
Daarna kun je met een AND of OR formule deze combineren, of (voorzichtig) alles in 1 formule proppen.
 
Klopt er komt dan 4 uit.

Vul nu in F30 het medium in wat in wat bijvoorbeeld in A9 staat en er komt 16 uit als het goed is.

Nu moet de formule eigenlijk zelf kijken of mediums ingevuld in kolom F voorkomen in kolom A en of de temperatuur en leeftijd ingevuld in kolom I en L hoger zijn dan bij dat medium in kolom B en C. Dan moet er altijd 16 uit komen.
Anders moet de berekening uitgevoerd worden die achteraan staat.

Code:
INDEX($F$1:$J$6,INT(AB30/10)+3,1+HLOOKUP(P30,$F$1:$J$2,2,FALSE)


Op zich is de formule zoals ik hem zelf in mijn vorige post had staan dus goed, maar er moet nog een MATCH gedeelte bij in komen denk ik.
 
klopt er komt dan 4 uit.

Vul nu in f30 het medium in wat in wat bijvoorbeeld in a9 staat en er komt 16 uit als het goed is.

Nu moet de formule eigenlijk zelf kijken of mediums ingevuld in kolom f voorkomen in kolom a en of de temperatuur en leeftijd ingevuld in kolom i en l hoger zijn dan bij dat medium in kolom b en c. Dan moet er altijd 16 uit komen.
Anders moet de berekening uitgevoerd worden die achteraan staat.

Code:
index($f$1:$j$6,int(ab30/10)+3,1+hlookup(p30,$f$1:$j$2,2,false)


op zich is de formule zoals ik hem zelf in mijn vorige post had staan dus goed, maar er moet nog een match gedeelte bij in komen denk ik.

Jurjen,

Je spreekt hier van hoger in bovenstaand schrijven, moet het groter dan teken niet geplaatst worden i.p.v. de kleiner dan.

Code:
=if(and(i30>=b9, l30[color="red"][b][SIZE="3"]>[/SIZE][/b][/color]c9,f30=$a$9),16,index($f$1:$j$6,int(ab30/10)+3,1+hlookup(p30,$f$1:$j$2,2,false)))

En haal de groter dan (>) teken weg in kolom B voor de 25.
 

Bijlagen

Harry,

Klopt helemaal. Dat had ik zelf al weer veranderd, maar hier nog niet weg gezet.

Ik ben nu net als jij op die forumle uitgekomen en die werkt.

Nu echter moet ik er nog een match gedeelte aan toe zien te voegen, zodat er gezocht wordt naar een medium wat in de lijst staat dus:
ANOLYTE (BRINE SATUR.+ CHL)
CAUST.SODA SOLUT.18% OR 5%
CAUST.SODA SOLUT.MED.(33%)
CHL.WST A.MOIST
CHL/WASTE AIR
CHL/WST A.MOIST
CHLORINE CONDENSATE
CHLORINE GAS
CHLORINE GAS Moist
CHLORINE CONDENSATE
LEAN BRINE
PURE BRINE
SULFURIC ACID CONCENTRATED
SULFURIC ACID LOW (78%)

En dan naar temperatuur en leeftijd gekeken wordt. Staat het NIET in de lijst moet altijd het gedeelte
Code:
=INDEX($F$1:$J$6,INT(AB30/10)+3,1+HLOOKUP(P30,$F$1:$J$2,2,0))
Uitgevoerd worden.


EDIT:

Ik heb nu de forumle
Code:
=IF(AND(I30>B9, L30>C9, F30=A9),16,INDEX($F$1:$J$6,INT(AB30/10)+3,1+HLOOKUP(P30,$F$1:$J$2,2,FALSE)))

Wat werkt zoals de bedoeling is. Alleen natuurlijk maar voor 1 stof uit de lijst. Hoe krijg ik het nu dat er gezocht word naar stoffen uit de lijst?
 
Laatst bewerkt:
Zoiets Jurjen?

Code:
=ALS(EN(I30>=VERT.ZOEKEN(F30;$A$9:$C$24;2;0);L30>VERT.ZOEKEN(F30;$A$9:$C$24;3;0));16;INDEX($F$1:$J$6;INTEGER(AB30/10)+3;1+HORIZ.ZOEKEN(P30;$F$1:$J$2;2;0)))
 

Bijlagen

Harry, het lijkt er op dat dat een goed formule is. Ik ga de forumule eens proberen in een copy van de echte sheet en kijken hoe het allemaal uit komt.
 
Bijna goed :D

Er was nog iets waar ik geen rekening mee gehouden had.
De lijst mediums is namelijk veel groter dan die er in het voorbeeld stond. Echter bij de andere mediums hoeft er geen extra berekening uitgevoerd te worden. En volstond de originele berekening.

Vul ik nu onder medium, bijvooorbeeld NITROGEN in, dan snapt de formule het niet meer.
 
Je doet een VERT.ZOEKEN in O31 op F31 in het bereik BH51:BI82, maar waar staan dan de gegevens?
Idem voor cel P31.
Voor de cellen in de kolommen U,V,W en Z31, wordt ook verwezen naar INDEX AO85:AW112
Waar zijn deze gegevens dan?

Het bestandje staat vol met tekortkomingen.

Upload een nieuw bestandje als je wil met aangevulde gegevens.
Hier kan ik niks meer van maken helaas.
 
Je doet een VERT.ZOEKEN in O31 op F31 in het bereik BH51:BI82, maar waar staan dan de gegevens?
Idem voor cel P31.
Voor de cellen in de kolommen U,V,W en Z31, wordt ook verwezen naar INDEX AO85:AW112
Waar zijn deze gegevens dan?

Het bestandje staat vol met tekortkomingen.

Upload een nieuw bestandje als je wil met aangevulde gegevens.
Hier kan ik niks meer van maken helaas.

Ja kijk, dat voorbeeldje van mij is een stukje van een veel grotere database. Die ik juist niet helemaal online wilde zetten ivm alle gegevens dan op straat komen ;)
Voorlopig heb ik alle stoffen waar nog geen uitzondering voor bekend waren en dus niet in het lijstje stonden wat in het voorbeeld staat er bij gezet. Daar de leeftijd en temperatuur op op hoge waarden van gezet. Mochten er gedurende mijn onderzoek nu meer uitzonderingen bij komen pas ik die temperatuur en leeftijd aan en werkt het gelijk.

In principe is het probleem dus opgelost! :D Alleen net anders dan ik oorspronkelijk in gedachten had :cool:

Dus in ieder geval enorm bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan