Je veux filtrer les dates âgées de plus de 3 mois et je veux avoir la variable système
Dim Date3M_ago As Date
Date3M_ago = Worksheets("Engine").Range("C1")
Selection.AutoFilter
ActiveSheet.Range("A:C").AutoFilter Field:=46, Operator:= _
xlFilterValues, Criteria1:= Date3M_ago
3 Réponses :
Vous pouvez essayer ceci: strong>
Avez-vous essayé cela? Selon vos paramètres, cela pourrait vous donner des résultats inattendus (comme cela a fait à ma fin).
Espérons que quelque chose ici est utile pour vous:
Vous dites que vous devez filtrer les dates plus anciennes qu'aujourd'hui moins trois mois (comme c'est ce que votre formule dans Si nous mettons ci-dessus dans la pratique avec quelques données telles que ci-dessous (dates sont formatées "DM-AAAAYY": P> Un morceau de code à filtrer sur la colonne C ressemblerait à: p> remarque comment le champ à filtrer est dans la plage à filtrer, par exemple : la troisième colonne? La sortie ressemblerait à: p> feuilles de calcul ("moteur"). Gamme (" C1 ") code> fait. La même chose peut être faite via VBA avec application.worksheetfunction.eadate (date, -3) code> ou même daadd code> selon @plutian sa réponse. Si ce n'est pas ce que votre intention était, vous pouvez également faire référence à votre propre variable à nouveau, mais assurez-vous de la transformer en une double valeur à utiliser dans le filtre> CDBL (date3m_ago) code> . P>
CDBL code> dans mon option pour tenir compte des valeurs de date-heure. < / li>
ul>
Une autre question monsieur monsieur, avant de fermer cela.Comment, est-ce que je fais la variable de zone de champ? Toujours chercher un nom à chaque fois
@Hunter, vous pouvez appliquer une variable au lieu du champ : = 3 code>. Cela devient par exemple devenir quelque chose comme champ: = x code>. Maintenant, vous pouvez attribuer n'importe quel nombre de colonnes avec le .Range ("A: C") code>, donc signifie 1, 2 ou 3 à la variable x. Si vous devez augmenter la plage, vous pouvez le faire et assigner d'autres colonnes.
Autofilter ne peut pas être appliqué sur une colonne à l'extérieur de la plage que vous essayez d'autofilter. Dans votre exemple, vous essayez de filtrer la colonne au ( champ: = 46 code>) mais n'appliquez que la plage de la colonne A à C. Appliquez une colonne à votre autofiltre, de même: Date3M_ago = DateAdd("m", -3, Now)
Fait intéressant, tandis que daadd code> renvoie une valeur de date, elle ne fonctionnera pas toujours comme une variable dans les critères (dépemnding sur les paramètres régionaux de Windows, je suppose). Pour le faire fonctionner, vous pouvez envelopper dans un CDBL code>> Critères1: = ">" & CDBL (Daadd ("m", -3, date)) code>. FutHermore +1 pour la bonne idée d'utiliser daadd code> :)
Merci JVDV, c'est vraiment intéressant de savoir. J'aurais peut-être utilisé cela pour un projet qui vient à venir, car je vais utiliser une autofiltre un peu.
Le CDate fonctionne également comme substitut de CDBL dans ce cas?
Non, ce ne serait pas. Cela signifierait même surkill comme daadd code> renvoie une date à laquelle elle est propre. Vérifiez le lien que j'ai fourni dans ma réponse, pour une meilleure compréhension de la raison pour laquelle le filtrage ne fonctionnerait pas avec les variables de date.
Assez juste. Comme je l'ai dit, essayez simplement d'apprendre comme je pourrais l'utiliser plus tard. Merci!
C'est quelque chose que je trouve aussi difficile à comprendre pourquoi la MS a rendu cela si difficile: s
Je suppose que c'est à faire de la compatibilité avec la douane de format de date différente. Il est presque impossible de prédire et de prendre en compte toutes les coutumes différentes. J'ai aidé quelqu'un qu'il n'y a pas trop longtemps, car il utilisait la coutume allemande des dates d'écriture sans années que dd.mm. Code> qui (bien sûr) a complètement jeté son code.
Votre autofilter sur la colonne 46, mais vous n'essayez que des colonnes Autofilter A: c. Par définition, un autofiltre ne peut pas être appliqué en excluant la colonne que l'autofiltre est appliqué sur. Incluez la colonne (jusqu'à) comme dans votre gamme ou définissez le champ que vous souhaitez filtrer comme un dans votre plage.