2017-10-07 8 views
-1

J'ai une feuille (Feuille1) où la colonne i est un champ de date. Je veux créer une macro qui demandera l'entrée de la date de début et de la date de fin, placez ces dates dans deux cellules, dites i38, i39, puis filtrez en utilisant ces données dans ces cellules. Est-ce possible? Je ne connais pas encore les macros et les VB, et je n'arrive pas à comprendre comment utiliser les données de cellule dans un filtre basé sur la date.Avancé ou autofiltre sur la plage de dates à partir des données de la cellule

Merci pour toute aide.

Répondre

0

Commencez par:

enter image description here

, la commande:

Sub FilterDateRange() 
    Dim d1 As String, d2 As String, r As Range 
    Set r = Range("I1:I26") 

    d1 = ">" & Application.InputBox(Prompt:="enter start date", Type:=2) 
    d2 = "<" & Application.InputBox(Prompt:="enter start date", Type:=2) 

    r.AutoFilter 
    r.AutoFilter Field:=1, Criteria1:=d1, Operator:=xlAnd, Criteria2:=d2 

    Range("I38") = Mid(d1, 2) 
    Range("I39") = Mid(d2, 2) 
End Sub 

peut produire:

enter image description here

EDIT # 1:

Pour comprennent les points d'extrémité (non seulement entre les points d'extrémité), utiliser ces lignes de code:

d1 = ">=" & Application.InputBox(Prompt:="enter start date", Type:=2) 
d2 = "<=" & Application.InputBox(Prompt:="enter start date", Type:=2) 
+0

Impressionnant, je vais essayer bientôt. S'il s'agit d'un fichier volumineux, existe-t-il un moyen de sélectionner simplement la colonne i de haut en bas au lieu d'utiliser la plage? Et au lieu d'installer les entrées dans une cellule, est-il possible de les utiliser dans le code sans les enregistrer? J'ai oublié la taille du fichier réel qui a besoin de ce filtre. Et la taille varie chaque mois. – 12fretter

+0

@ 12fretter Pour filtrer la colonne entière, utilisez cette ligne *** Réglez r = Range ("I: I") *** au lieu de la ligne affichée ............ puis déposez les deux derniers lignes de code au-dessus du *** End Sub *** –

+0

PARFAIT! Merci beaucoup. – 12fretter