在今天的日期过滤列。

时间:2014-10-29 11:15:36

标签: excel-vba vba excel

我尝试做的是过滤W列电子表格中的数据,然后如果N列中的值等于今天的日期,则将此表中的所有行复制到另一张表中。 / p>

我遇到的问题是将N列中的数据过滤到宏中的今天日期。下面我选择了一个随机数据来查看它的外观,我想要做的是弄清楚是否有办法让它自动更新到当前日期而无需手动更改。或者如果我需要采取另一种方法。

ActiveSheet.Range("$B$3:$W$2012").AutoFilter Field:=13, Operator:= _
    xlFilterValues, Criteria2:=Array(0, "1/20/2015")

日期格式化为(" ddd,date,mmmyy hh:mm - > Tue 20 Jan15 14:00)我只希望它根据日期而不是时间进行过滤。我也不想改变这种格式,因为它不是我创建的电子表格,它每天都会更新给我。

我对vba相当新,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

这应该有用;它不需要分解为函数或变量“todaysYear”等,但我这样做,所以你可以看到它是如何工作的。

Sub filter()
todaysDate = getTodaysDate()               'calls a function which prepares todays date in the format needed
With ActiveSheet
    .AutoFilterMode = False
    .Range("N:W").AutoFilter
    .Range("N:W").AutoFilter field:=10, Criteria1:=">2"                'whatever your first criteria is (Column W)
    .Range("N:W").AutoFilter field:=1, Criteria1:="=*" & todaysDate & "*"
End With
ActiveSheet.Cells.SpecialCells(xlCellTypeVisible).copy
Sheets("Sheet2").[a1].PasteSpecial xlPasteValues                       'Change to the name of the destination sheet
End Sub

Function getTodaysDate()
todayDay = WeekdayName(Weekday(Now), True)
todayDayDate = Weekday(Now)
todayMonth = MonthName(Month(Now), True)
todayYear = Mid(Year(Now), 3, 2)
getTodaysDate = todayDay & " " & todayDayDate & " " & todayMonth & todayYear
End Function