2008-12-05 14 views
1

J'ai une table avec une grande quantité d'informations, comment puis-je sélectionner seulement les derniers mois? (c. seulement les 31 dernières cellules de la colonne?)le mois dernier dans VBA Excel

Les données sont sous la forme

date1  numbers 
date2  numbers 
.    . 
.    . 
.    . 
daten  numbers 

où date1 est jj/mm/ccyy

acclamations

Répondre

2

Idéalement, il y aurait une colonne qui a la date dedans. Ensuite, vous pouvez faire un filtre avancé pour filtrer la plage de dates dont vous avez besoin. La sélection des 31 derniers jours ne sélectionnera pas toujours un mois seulement. Il peut également sélectionner jusqu'à 3 jours à partir du mois précédent.


Public Sub selectLastMonth() 
    Dim ws As Worksheet 
    Dim dStart As Date, dEnd As Date 

    Set ws = ActiveSheet 
    ws.Range("A:B").Sort key1:=ws.Range("A2"), header:=xlYes 

    dEnd = ws.Range("A1").End(xlDown).Value 
    dStart = DateSerial(DatePart("yyyy", dEnd), DatePart("m", dEnd), 1) 

    ws.Range("A:B").AutoFilter field:=1, Criteria1:=">=" & dStart, Operator:=xlAnd, Criteria2:="<=" & dEnd 

    Set ws = Nothing 
End Sub 
+0

merci, thats vraiment ce que je dois - je l'ai déjà une colonne avec la date - comment pourrais-je écrire le filtre vba? –

+0

merci Jason - c'est génial –

1

utilisation

alors vous pouvez obtenir la plage de LastRow-31 à LastRow si vous avez le dat e comme spécifié puis déplacez le point de départ vers l'avant jusqu'à la valeur date = date (if (now.month = 1, now.year-1, now.year), if (now.month = 1,12, now.month-1), maintenant.jour)

Questions connexes