• 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, maar dan anders?

Status
Niet open voor verdere reacties.

Nicole©

Gebruiker
Lid geworden
9 okt 2006
Berichten
15
Goedemorgen,

Wie kan mij het verlossende antwoord geven op de volgende vraag? Ik kom er zelf niet uit, en ook met de zoekfunctie geen antwoord kunnen vinden.

In de bijlage een voorbeeld, maar in werkelijkheid bestaan kolom A en B uit zo'n 3000 regels en kolom G en H uit 150 dus daarom is normaal gebruik van IF onvoldoende. Wat ik wil is voor cel C2 kijken of cel B2 gelijk of tussen een interval valt van kolom G en H. Als dat het geval is, is het antwoord kolom I van de betreffende regel en als deze niet voorkomt is het antwoord cel A2.

Een vrij eenvoudige vraag, maar ik kom er gewoon niet uit.

Alvast dank!
Groet, Nicole
 

Bijlagen

  • Voorbeeld Excel.xlsx
    11,7 KB · Weergaven: 31
Dat kan met
PHP:
=ALS.FOUT(VERT.ZOEKEN(B2;$G$1:$I$5;3;0);ALS.FOUT(VERT.ZOEKEN(B2;$H$1:$I$5;2;0);A2))

Edit toch niet helemaal.:shocked:
 

Bijlagen

  • Voorbeeld Excel.xlsb
    12 KB · Weergaven: 30
Laatst bewerkt:
Sorry, ik ging ermee aan de slag en volgens mij klopt hij toch niet want in cel C4 geeft hij cel A4 terug ipv cel I4 omdat deze tussen de twee waarden valt en niet gelijk is aan.

Wie kan me helpen dit te fintetunen?
 
Zijn de waarden in de rechter tabel exacte waarden of moet voor een groep de waarde tussen de waarden van kolom G en H vallen ?
 
Nee, het is echt een interval dus inderdaad groter of gelijk aan G maar kleiner of gelijk aan H.
 
Volgens mij klopt de uitkomst in het voorbeeldje niet bij 1110. Deze waarde komt niet voor in de reeksen en zou dus B15 als uitkomst moeten hebben. Met een UDF
Code:
Function VenA(r1 As Range, r2 As Range, r3 As Range)
ar = r1
For j = 2 To UBound(ar)
    If r2 >= ar(j, 1) And r2 <= ar(j, 2) Then
        VenA = ar(j, 3)
        Exit For
    Else
        VenA = r3
    End If
Next j
End Function
 

Bijlagen

  • Voorbeeld Excel.xlsb
    17,3 KB · Weergaven: 21
Nicole,

Of gebruik deze:
Code:
=VERT.ZOEKEN(B2;H:J;3;1)

Maar...
Dan moet je kolom H oplopend sorteren.
En ik ga ervan uit dat er geen overlap in de klasse laag/hoog zit.
Ook zal je nu bij U16 (waarde 2720) nog een fout resultaat krijgen. omdat de waarde 2720 niet in de klasse hoog/laag te vinden in in het voorbeeld. Ik ga ervanuit dat dit met het hele bestand niet zal gebeuren.

Lambert
 
De waarde 1110 valt niet tussen de gegeven intervallen. Dus ik denk dat A4 wel juist gekozen is.
 
Jullie hebben gelijk, mijn voorbeeld is niet echt een goede afspiegeling van de werkelijkheid omdat ik geen waarden heb gegeven die ook echt in het interval zitten waardoor jullie oplossing wel klopt voor mijn voorbeeld maar niet de hele populatie, excuus. Dus bij deze een beter voorbeeld, zie bijlage.

De functie waar ik zelf mee kom maar die gewoon niet goed is is:

=IF(B2>=G2;IF(B2<=H2;I2;A2);A2)

Deze doet dus alleen de check op regel 2, en dat moet natuurlijk op de hele matrix. Dus als de check op regel 2 fout is moet die voor regel 3 gedaan worden etc etc totdat er een match is of totdat de laatste regel is bereikt zonder match en in dat geval moet de waarde uit kolom A weer gegeven worden.
 

Bijlagen

  • Voorbeeld Excel.xlsx
    11,8 KB · Weergaven: 20
Als je het met (kleiner dan) en (groter dan ) wilt doen, dan hierbij een voorbeeldje hoe dat zou kunnen.
Met 4 intervallen is het nog wel te doen, maar als de rechter matrix groter wordt, is het ondoenlijk om alle intervallen af te gaan lopen met ALS functies.

Groet
 

Bijlagen

  • Voorbeeld Excel-joost.xlsx
    12,6 KB · Weergaven: 20
Ik weet het, daarom ook mijn opmerking in de openingspost:

In de bijlage een voorbeeld, maar in werkelijkheid bestaan kolom A en B uit zo'n 3000 regels en kolom G en H uit 150 dus daarom is normaal gebruik van IF onvoldoende.

Maar ben ervan overtuigd dat dit op de een of andere manier op is te lossen in 1 regel over het gehele bereik dus ik wacht nog even geduldig af!
 
Inderdaad, maar nu er nog eens naar gekeken en dat was mijn oplossing. Heb de code hier en daar aangepast zodat hij op het oorspronkelijke bestand werkt en ook daar geen problemen. Ik kan alleen niet zeggend at ik 100% begrijp wat er gebeurd maar dat is dus duidelijk iets wat ik nog op mijn to-learn lijstje moet zetten.

Merci!
 
Zo zou het kunnen zonder VBA.
Hierbij is het wel noodzakelijk dat de rechter matrix eerst van laag naar hoog wordt gesorteerd.

Groet
 

Bijlagen

  • Voorbeeld Excel-joost.xlsx
    12,9 KB · Weergaven: 20
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan