sorteren met VBA in een lijst contracten

Status
Niet open voor verdere reacties.

djbeer

Gebruiker
Lid geworden
27 aug 2009
Berichten
12
Bijgaand een voorbeeld van een excel bestand.
Ik heb een lijst met contracten, kunnen meerdere contracten onder 1 persoon zijn. Nu wil ik graag een lijst maken, waarbij een selectie wordt gemaakt obv een einddatum (rode velden in het voorbeeld).
Nu wil ik een filter maken dmv VBA, waarbij alle contracten (rekeninghoudend met begin(kolomH) en einddatum (kolom I)) van de customer (kolom G) zichtbaar zijn. En dan alleen indien bij die Customer een rood veld in kolomI voorkomt.

Kan iemand mij helpen omdat mogelijk te maken?

alvast bedankt.
 

Bijlagen

  • Test vba contracten.xlsx
    10,5 KB · Weergaven: 26
Ik zie geen rode velden. Is CustomerID de persoon waar je het over hebt? Werk ook even de verwachte uitkomst uit.
 
in de formule van de VO (via gedefinieerde namen) wordt verwezen naar een bestand & werkblad X:\financieel\financiele administratie\archief\cijfers\[Borg Gegevens van SQL database ophalen +sortering 1.xlsm]Instellingen, die zal er wel zijn op jouw computer, maar niet op de onze
 
aangepast bestand, waarbij de uitkomst is uitgewerkt. Bij deze customer zijn alle contracten afgesloten en die wil ik dan inzichtelijk hebben. :cool:
En op tabblad uitgangspunt de variabelen van de voorwaardelijke opmaak zijn ingevoegd.

Mochten er nog vragen zijn dan hoor ik het graag.
 

Bijlagen

  • Test vba contracten.xlsx
    11,9 KB · Weergaven: 29
Ik zie geen verschil tussen de tab 'uitkomst' en de tab 'uitgangspunt'. Wat je met de voorwaarden doet is totaal onduidelijk. Wil je alleen de customerid's overzetten waar geen lege einddatum voor te vinden is?

In P2 van de tab 'uitgangspunt'
PHP:
=MIN(IF($C$3:$C$17=C3;$I$3:$I$17))<>0
Opslaan als matrixformule.

Vervolgens de code draaien.
Code:
Sub VenA()
  Sheets("uitgangspunt").Cells(2, 1).CurrentRegion.Offset(1).AdvancedFilter xlFilterCopy, Sheets("uitgangspunt").Range("P1:P2"), Sheets("uitkomst").Cells(22, 1)
End Sub

Als je Office 365 hebt dan kan het waarschijnlijk ook zonder VBA.
 
Het verschil tussen uitgangspunt en uitkomst is dat en in uitgangspunt meerdere klanten en verschillende contracten staan.
In de uitkomst zie je alleen maar de klant waarvan alle contracten opgezegd zijn en geen contracten meer lopen heeft. (dat is het doel, dat ik d.m.v. de filter dat van allen klanten (die geen lopende contracten meer hebben) kan zien)
Daarnaast heeft de klantcode een rode kleur ontvangen voor de filter.

Met de voorwaarde geef ik aan welke contracten in die periode opgezegd zijn. zodat ik daarop de selectie kan maken. Dit om te kijken of die klant geen contracten meer heeft lopen.
 
Laatst bewerkt:
Ja maar bij mij kopieert hij alleen maar de kopregel naar regel 22 in tabblad uitkomst.
 
Het werkt gewoon in jouw voorbeeld bestand. Het is niet handig om dezelfde namen te gebruiken voor verschillende bereiken.
 

Bijlagen

  • Test vba contracten.xlsb
    17,8 KB · Weergaven: 21
Ik zie in jou bestand dat het kopieren goed gaat (voor mijn gevoel is dit nu hetzelfde als het uitgangspunt). Echter wil ik daar alleen maar de klant (customer) waarvan alle contracten zijn afgelopen (dus in het voorbeeld alleen 11781) want bij 11782 is er in die periode wel een contract beeindigd, maar heeft nog een lopend contract (15415) en bij 11783 lopen er nog 2 contracten.
Hoe krijg ik dat inzichtelijk nu?
 
Even de formule aanpassen zodat er aan alle voorwaarden voldaan worden.

PHP:
=OR(MIN(IF($C$3:$C$17=C3;$I$3:$I$17))<>0;AND(I3>=Beeindigtvanaf1;I3<=Beeindigttot1))
 
Allereerst bedankt voor al je snelle reacties.
Ik heb de formule gekopieerd en afgesloten met ctrl-shift-enter, maar geeft waarde #naam? aan.

Gaat het ook goed indien de geselecteerde periode juni 2020 is? Dan zo hij geen item moeten kopieren naar tabblad uitkomst.


aanpassing:
Zie het al, Je gebruikt de Engelse waarden en ik moet de Nederlandse gebruiken.
echter kopieert hij bij mij dan nog steeds alles, zonder de filter
 
Laatst bewerkt:
Even vertalen dan maar. OR = OF AND = EN

Je zal de formule aan moeten passen aan alle voorwaarden die je wil stellen. Aangezien deze iedere keer wijzigen aan gevuld worden kan je dat het beste zelf doen.
 
Ik had hem later al vertaald (kwam er later achter die vertaling, maar had al een reactie geschreven), echter kopieert hij bij mij dan nog steeds alles, zonder de filter
 
Laat maar zien hoe je het toegepast hebt. Hier werkt het gewoon.
 
zie bijlage
 

Bijlagen

  • Test vba contracten (2).xlsb
    17,7 KB · Weergaven: 14
Hij is nu wel juist maar bij mij kopieert hij nog steeds alle gegevens. ipv alleen die ene klant. zie bijlage
 

Bijlagen

  • Test vba contracten (2) (1).xlsb
    17,9 KB · Weergaven: 20
In Excel 365 werkt het gewoon in Excel 2010 werkt het niet. Als je een niet matrixformule gebruikt lijkt het wel te werken in Excel 2010

Code:
=OR(COUNTIF($C$3:$C$17;C3)=COUNTIFS($C$3:$C$17;C3;$I$3:$I$17;"<>");AND(I3>=Beeindigtvanaf1;I3<=Beeindigttot1))
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan