Access zoek eerste waarde kleiner dan

Status
Niet open voor verdere reacties.

koosklomp

Gebruiker
Lid geworden
28 jan 2010
Berichten
17
Hallo,

Ik heb in access de volgende database:

[table="width: 500, class: grid"]
[tr]
[td]ID[/td]
[td]VALUE[/td]
[td]TARGET VALUE[/td]
[td]Voorbeeld Resultaat[/td]
[/tr]
[tr]
[td]1[/td]
[td]10[/td]
[td]8.5[/td]
[td]3[/td]
[/tr]
[tr]
[td]2[/td]
[td]9[/td]
[td]7.5[/td]
[td]4[/td]
[/tr]
[tr]
[td]3[/td]
[td]8[/td]
[td]6.5[/td]
[td]5[/td]
[/tr]
[tr]
[td]4[/td]
[td]7[/td]
[td]5.5[/td]
[td][/td]
[/tr]
[tr]
[td]5[/td]
[td]6[/td]
[td]4.5[/td]
[td][/td]
[/tr]
[/table]

Nu wil ik een Macro schrijven die een vierde kolom aanmaakt waarin het ID nummer komt te staan van de eerste keer dat VALUE kleiner is dan TARGET VALUE.
Bijv: ID 1 heeft TARGET VALUE 8.5. Bij ID 3 is VALUE 8, en daarmee de eerste keer dat VALUE < TARGET VALUE. In de vierde kolom van ID 1 zou ik dus graag 3 als uitkomst willen krijgen.

Hebben jullie een idee hoe ik de Macro zou kunnen opzetten? Of kan dit beter met SQL?

Alvast bedankt,
Koos
 
Laatst bewerkt:
Je vraag is redelijk onbegrijpelijk; zo zie ik in elk record een Target Value staan. Doen die dan niet meer mee? En wat wil je dan bij record 2 zien? En bij 3? Pas je voorbeeld aan zodat we kunnen zien wat het beoogde resultaat is.
Als de gevraagde uitkomst uit een willekeurige rij kan komen, kun je er met SQL denk ik niet veel aan oplossen, al zou ik daar nog even over moeten nadenken, afhankelijk van wat nu precies de bedoeling is. Een extra veld in de tabel is natuurlijk onzinnig, want dit soort berekeningen (al dan niet met een functie of een SQL statement) doe je gewoon in een query.
 
Hi Octa, ik was al bang dat het onduidelijk zou overkomen. Ik heb nu een kolom met het begoode resultaat toegevoegd.
Voor ieder ID geldt een unieke TargetValue die gezocht moet worden in de volgende ID nummers. Zo heb ik nu weergegeven dat het TargetValue van ID1 gevonden wordt bij ID3, het TargetValue van ID2 wordt gevonden bij ID4 enz.
Hoop dat het nu wat duidelijker is.

Ps. Mocht het eenvoudiger zijn om een query te gebruiken dan hoor ik het graag! (in excel gebruik ik Index/Match formules om dit vraagstuk op te lossen)
 
Laatst bewerkt:
En is dit een reëel voorbeeld? Want als ik je voorbeeldje bekijk, is het een snel eindigende reeks.
 
Dit zijn de eerste 5 records van een dataset bestaande uit 416.452 ID's. Deze omvang is de reden dat ik ben overgestapt van Excel naar Access. De Index(Match) formule in Excel kan een dergelijke omvang niet aan (excel VBA ook niet trouwens). Dus ik hoop dat Access met een query/sql/vba dit wel kan.
 
Als je SQL gebruikt voor dit soort vraagstukken, kom je terecht bij een DLOOKUP en DMIN functie. Die zijn gruwelijk traag, en bij 400.000+ kun je dus gerust een extra maaltijd bestellen vermoed ik. VBA in Excel is niet anders als VBA in Access, dus als het in Excel niet lukt met VBA geef ik je in Access een vergelijkbare kans. Maar post eens een databaseje met wat relevante data, want op basis van deze staat kan ik natuurlijk niks proberen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan