VBA Filteren

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

Neuz

Gebruiker
Lid geworden
21 aug 2012
Berichten
147
Hey allemaal,

Ik ben bezig met een stukje code te schrijven met VBA. Nu wil ik van een aantal gegevens welke
op een tabblad staan weggeschreven de laatste 2 datums opgeroepen hebben.

Ik heb namelijk een rijtje staan met test gegevens die ziet er als volgt uit:

Test datum Soort test Resultaat
01-04-2014 Shuttle run Goed
02-04-2014 Coopertest Redelijk
05-04-2014 Shuttle run Goed
06-04-2014 Shuttle run Redelijk
08-04-2014 Coopertest Goed
09-04-2014 Coopertest Slecht
10-04-2014 Shuttle run Redelijk

Ik wil nu de laatste 2 data's waarop de shuttle run gelopen is ertussen uit filteren.
Hetzelfde wil ik doen voor de coopertest.
In dit voorbeeld zouden dat dus de gegevens van
Coopertest 08-04-2014 en 09-04-2014
Shuttle run 10-04-2014 en 06-04-2014

De rest van de gegevens moeten wel blijven staan.

Nog een klein voorbeeld bestandje
Bekijk bijlage VBA Filteren.xlsx

Zou iemand mij met dit probleem kunnen helpen.

Alvast bedankt.

Groet Neuz
 
Laatst bewerkt:
Moet het met VBA en welke informatie verwacht je behalve de data?
 
Het liefste met VBA maar mag ook gewoon met formules zijn als dat makkelijker is.

De informatie die ik wil hebben is:
Datum
Welke test (shuttle run of coopertest)
De waardes die erbij horen (max zuurstof e.d.)

Deze zou ik via VBA willen weergeven op een ander tabblad.

Alvast bedankt voor de hulp.

Groet Neuz
 
Het kan eventueel gewoon met formules. In je voorbeeldbestand snap ik alleen de "unieke combinatie" niet. Deze zijn allemaal "C"+datum.

Indien dat C+datum en S+datum moet zijn OF de datum altijd uniek is, is het zelfs redelijk eenvoudig met formule's. VBA kan overigens prima, maar qua onderhoud en algemeen gebruik is het gebruik van formule's, wat mij betreft, vaak beter
 
De datum kan ik inderdaad beter in C+datum en S+datum wijzigen. De rest wat ik gemaakt heb heb ik in userforms gemaakt.

Zou je een voorzetje kunnen geven?

Alvast bedankt

Groet Neuz
 
Bekijk bijlage VBA Filteren 2.xlsx

Dit is de opzet in je voorbeeld. Zolang de data uniek zijn en/of je C/S gebruikt is dit een werkbare oplossing. Ik heb de range van de formules nu beperkt tot het gedeelte met informatie, maak die kunnen natuurlijk aangepast worden tot elk nodig bereik.
 
Beste Wampier,

Ik heb even gekeken naar je opzet. Hij doet precies wat ik wil maar ik zou graag willen weten hoe het werkt.
Ik heb namelijk geprobeerd de formule te begrijpen maar op het moment dat ik iets aanpas of naar de formule
kijk en daarna op enter druk komt er #waarde in de cel te staan.

Hoe kan dit?

In ieder geval bedankt voor het opzetje en ik ga deze zeker gebruiken.

Groet Neuz
 
Beste Wampier,

Hier ben ik nogmaals.
Ik wilde je formules alvast om gaan zetten naar VBA zodat ik deze netjes bij ieder
nieuw tabblad wat er wordt aangemaakt aan de hand van de gegevens welke staan
ingevoerd op een userform de formules netjes werden weggeschreven op het tabblad.

Maar nu loopt mijn script continu vast bij de 3de regel.

Code:
        .Range("BM44").Value = "Laatste test"
        .Range("BN44").Value = "{=LARGE((BF:BF=""Shuttle run"")*1 * BE:BE;1)}"
        .Range("BO44").Value = "=VLOOKUP(""S"" & TEXT(BN44;""dd-mm-yyyy"");BD:BJ;4;FALSE)"
        .Range("BP44").Value = "=VLOOKUP(""S"" & TEXT(BN44;""dd-mm-yyyy"");BD:BJ;5;FALSE)"

Zoals je ziet heb ik alle teksten al aangepast aan het Engels. Ook heb ik de range
van de formules zo aangepast dat deze overeen komen met mijn tabblad.

Verder zit er volgens mij bij het eerste stukje formule (=grootste of =large) nog iets
fout. Als ik deze wegschrijf zoals hij hierboven staat weer gegeven dan geeft excel de formule
weer als tekst. Maar als ik de { en } weghaal dan loopt het script al vast bij deze formule.

Zou je me kunnen helpen dit probleem op te lossen.

Alvast bedankt.

Groet Neuz
 
Het is een matrix formule, die moet je met CTRL-SHIFT-ENTER afsluiten in plaats van alleen ENTER. excel zet er dan {} haken omheen om aan te geven dat het een matrix formule is.

Matrix formules werken op een tussenresultaat. Het tussenresultaat wordt gebouwd van de resultaten van de normale formule en dan de buitenste functie erop los gelaten, in dit geval hoogste.

Ik zie dat twee post elkaar gekruist hebben. met VBA moet je een matrix toevoegen met:

.Range("BN44").FormulaArray

als ik het goed heb, maar het is een beetje laat om te testen ;)
 
Laatst bewerkt:
Beste Wampier,

Het is inderdaad al een beetje laat om te testen maar ik was te nieuwsgierig om het
niet te doen.

De formules heb ik nu aangepast het was inderdaad .FormulaArray.
Bij de andere formules heb ik een kleine aanpassing gedaan waar ik eerder overheen
gelezen heb. Ik heb de ; vervangen door een , in VBA mag er namelijk geen ; gebruikt
worden.

Er is echter nog een klein probleempje. Als ik de test waardes invul dan worden deze
niet weergegeven in de range BN44. Deze cel blijft de #WAARDE! weergeven.

Bedankt voor je hulp tot nu toe en ik hoop dat je me ook nog met de laatste loodjes kan helpen.

Voor vanavond geef ik het in ieder geval op.

Welterusten

Groet Neuz
 
Heb je eventueel een klein testbestandje waarin ik dat probleem wat duidelijker kan zien? Anders wordt debuggen erg moeilijk.
 
Beste Wampier,

Sorry van de late reactie maar er waren even wat privé omstandig heden.
Ik heb vandaag even snel tijd gemaakt om een klein voorbeeld bestandje
te maken.

Bij deze
Bekijk bijlage VBA Filteren - Helpmij.xlsm

Alvast bedankt voor de hulp weer.

Groet Neuz
 
Het probleem met de eerste formule is simpelweg cel D1. hier staat tekst in, geen datum. Als je dat probeert te vermenigvuldigen krijg je de #waarde error.

Het probleem met de tweede formule (vlookup) is het gebruik van "dd-mm-yyyy". Vanwege microsofts briljante (ja dat is sarcastisch) formatting regels is dat in een nederlandse versie: "dd-mm-jjjj" als je het met de hand invoert in een werkblad, maar niet als je het invoert in VBA.
 
Beste Wampier,

Ik heb nog even terug gekeken naar dit berichtje van jouw maar volgens mij heb ik precies dezelfde code gebruikt en
deze volledig overgezet naar VBA.

Bekijk bijlage 210467

Dit is de opzet in je voorbeeld. Zolang de data uniek zijn en/of je C/S gebruikt is dit een werkbare oplossing. Ik heb de range van de formules nu beperkt tot het gedeelte met informatie, maak die kunnen natuurlijk aangepast worden tot elk nodig bereik.

Ik snap er nu helemaal niets meer van.
Zou je er nog een keer naar kunnen kijken voor mij?

Alvast bedankt.

Groet Neuz
 
Als je kijkt in het voorbeeld dat je zelf gepost hebt op 22 mei zie je dat je de formule die je toepast kolommen gebruikt:

E:E en D:D

Echter heb je in D1 tekst staan en dat is waarom de formule faalt. Als je d2:d32000 en e2:e32000 gebruikt in plaats van E:E en D:D werkt het gewoon prima. Als alternatief kun je geen kopje gebruiken boven je tabel en het werkt ook. (open je voorbeeld file van 22mei, ga naar d1 en druk op delete en je zult zien dat je formule werkt
 
Beste Wampier,

Ik heb deze oplossing even geprobeerd en het werkt super.

Dank je wel voor de hulp.

Groet Neuz
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan