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

Verticaal zoeken met een macro

Status
Niet open voor verdere reacties.

Danielle22

Gebruiker
Lid geworden
8 mei 2007
Berichten
378
Hallo,

Ik heb een probleempje met verticaal zoeken. Ik heb een schema met dubbele artikelnummers en omschrijvingen. Nu heb ik een macro voor het filteren van de dubbele artikelnummers. Maar nu wil ik ook een macro die dan de omschrijvingen erbij zet. Ik kan dit wel handmatig oplossen met verticaal zoeken maar dit moet eigenlijk gebeuren met een vba-code. Want het moet een gebruiksvriendelijk rapportage worden.

Ik heb voor de duidelijkheid even een voorbeeldje bijgevoegd. Als er op "totalen" gedrukt wordt dan filtert die. Maar met de knop "inplementeer omschrijvingen" moet die eigenlijk de omschrijvingen erbij zetten.

Wie kan mij helpen :confused: ?

Groetjes,

Danielle
 

Bijlagen

Hoi Dannielle

Dit lukt voor mij:

Code:
Columns("E:G").AdvancedFilter CriteriaRange:=Columns("E:E"), Action:=xlFilterCopy, _
        CopyToRange:=Columns("M:O"), Unique:=True

Ik vind het wel een beetje raar dat je die niet vond, aangezien de rest van de code wel goed ineen zit ;)

Alhoewel, kan altijd beter natuurlijk. Zal direct de code onder handen nemen.

Dan kan jij de 2 versies naast mekaar leggen en vergelijken.

Groeten

Wigi
 
Voilà, zoals beloofd:

Code:
Sub MaakSubtotalen()
Dim iLaatsteRegel As Long

    Application.ScreenUpdating = False
    
    Range("I1:P1").EntireColumn.ClearContents
    
    Columns("E:G").AdvancedFilter CriteriaRange:=Columns("E:E"), Action:=xlFilterCopy, _
        CopyToRange:=Columns("M:O"), Unique:=True
    
    With Range("P1")
        .Value = "TOTAAL VERBRUIK"
        .Font.Bold = True
    End With
    
    Range("I1:P1").EntireColumn.AutoFit
    
    Range("P2").Formula = "=SUMIF(C[-11],RC[-3],C[-12])"
    
    iLaatsteRegel = Range("N2").End(xlDown).Row
    
    Range("P2").Copy Range("P2:P" & iLaatsteRegel)
    Range("P1").Select
    
    Application.ScreenUpdating = True

End Sub

Wigi
 
Hallo Wigi,

Bedankt voor je reactie. Ja ik krijg de omschrijvingen er op deze manier ook bij. Maar het probleem is dat die de aantallen niet meer goed pakt. Hij moet echt filteren op artikelnummer. Zie de omschrijvingen proefgegeven. Die kloppen nu niet. Hij moet eigenlijk filteren op artikelnummer en dan wil ik graag met een macro (vertikaal zoeken de omschrijvingen erbij hebben). Want de artikelnummers zijn meestal uniek. En de omschrijvingen zijn vaak anders.

Hopelijk is het een beetje duidelijk :) .

Alvast bedankt.

Groetjes,

Danielle
 
Hoi Dannielle

Hier is het.

Code:
Sub MaakSubtotalen()
    Dim iLaatsteRegel As Long

    Application.ScreenUpdating = False
    
    Range("I1:P1").EntireColumn.ClearContents
    
    iLaatsteRegel = Range("E2").End(xlDown).Row
    
    Range("E1:F" & iLaatsteRegel).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E" & iLaatsteRegel), Unique:=True
    Range("E1:G" & iLaatsteRegel + 1).SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants, 23).Copy Range("M1")
    Application.CutCopyMode = False
    ActiveSheet.ShowAllData
    
    With Range("P1")
        .Value = "TOTAAL VERBRUIK"
        .Font.Bold = True
    End With
    
    Range("M1:P1").EntireColumn.AutoFit
    
    Range("P2").Formula = "=SUMIF(C[-11],RC[-3],C[-12])"
    
    iLaatsteRegel = Range("N2").End(xlDown).Row
    
    Range("P2").Copy Range("P2:P" & iLaatsteRegel)
    Range("P1").Select
    
    Application.ScreenUpdating = True

End Sub

Heb een keertje een kunstgreep uitgehaald om het probleem van die VERT.ZOEKEN te omzeilen, maar die zal jij wel vinden. ;)

Wigi
 
Hallo Wigi,

Top!:thumb: . Ik weet niet hoe je het zo snel voor elkaar krijgt maar ik was hier alweer 2 dagen mee bezig haha. En ik kwam er maar niet uit.

Heel erg bedankt hiervoor.

Groetjes,

Danielle
 
Hallo,

De code heb ik even toegepast op de database. Hij loop echter perfect als alle gegevens ingevuld zijn. Maar helaas komt het ook wel eens regelmatig voor dat er een artikelnummer mist. Deze is dan op een of andere manier niet bekend. Dus als er een artikelnummer mist geeft die een foutmelding. Is er misschien ook een VBA-code die een willekeurige getal in de lege cellen in de kollom artikelnummer zet? Of dat die in ieder geval wel door blijft lopen.

Ik heb even een voorbeeldje gemaakt. Zelf komt ik er niet echt uit. Als ik er bijvoorbeeld INKOOP bij de kollom afdeling zet dan filtert die niet meer echt goed. Zie voorbeeld.

Ik heb zelf ook nog even de kosten erin verwerkt. Die loop nu wel goed. Ik heb nog wel een paar vraagjes:

Kunnen ook automatisch het totale verbruik en totale prijs onder aan de lijst gezet worden? En kan die ook goed filteren als ik er een andere afdeling bij in zet? :rolleyes:

Alvast bedankt voor de reacties.

Groetjes,

Danielle
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan