【问题标题】:Filter column on today's date.今天日期的筛选列。
【发布时间】:2014-10-29 11:15:35
【问题描述】:

我要做的是过滤 W 列上电子表格中的数据,然后如果 N 列中的值等于今天的日期,则将此工作表中的所有行复制到另一个工作表中。

我遇到困难的地方是将 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 还很陌生,因此我们将不胜感激。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这应该有效;它不需要分解为函数或变量“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
    

    【讨论】:

    • 不得不做一些调整,但这最终效果很好。感谢您的回复,很抱歉我花了这么长时间才回复您。
    • 如果这个答案有用,请考虑投票 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多