复制筛选的日期,执行格式化并将其粘贴回筛选的列

时间:2017-10-27 18:15:13

标签: vba excel-vba excel

我在工作表名称中有日期列"日期"日期格式错误的地方。我将错误的日期过滤到表格名称" Raw Dates"我在其中放置了修正日期格式的公式(第一栏),当我试图将日期粘贴回同一列时,我正在调试。

不确定哪个是正确的VBA代码,下面是代码,还附加了excel文件供您参考。

如果你有比这更好的选择,那么将不胜感激。

Sub DateFormat()

Dt = Format(DateSerial(Year(Date), Month(Date), 1), "YYYY")
lr = Cells(Rows.Count, 1).End(xlUp).Row

    ActiveSheet.Range("A1:C" & lr).AutoFilter Field:=1, Operator:= _
        xlFilterValues, Criteria2:=Array(0, "12/9/" & Dt)
    Range("A2:A" & lr).SpecialCells(xlCellTypeVisible).Copy Sheets("Raw Dates").Range("A2")

Sheets("Raw Dates").Select
Lrw = Cells(Rows.Count, 1).End(xlUp).Row
Range("B2:I" & Lrw).FillDown
Range("I2:I" & Lrw).Copy

Sheets("Dates").Select
Range("A2:A" & lr).SpecialCells(xlCellTypeVisible).PasteSpecial xlPasteValues 'stuck here

End Sub

此致 Rajkumar H

1 个答案:

答案 0 :(得分:1)

为什么不在过滤后直接将公式应用于A列中的可见单元格?

Dt = Format(DateSerial(Year(Date), Month(Date), 1), "YYYY")
lr = Cells(Rows.Count, 1).End(xlUp).Row

ActiveSheet.Range("A1:C" & lr).AutoFilter Field:=1, Operator:= _
    xlFilterValues, Criteria2:=Array(0, "12/9/" & Dt)
For Each c In Sheets("Dates").Range("A2:A" & lr)
       If c.Visible = True Then
         'apply your formula to the cell value
        End If
    next c