0

我有这个公式来搜索名称并将该行移动到另一张表:

With Intersect(Sheet.UsedRange, Sheet.Columns("D"))
    .AutoFilter 1, "=Name"
    With Intersect(.Offset(2).EntireRow, .Parent.Range("A:G"))
        .Copy Sheet.Cells(Rows.Count, "A").End(xlUp).Offset(1)
        .EntireRow.Delete
    End With
    .AutoFilter
End With

有没有办法使用相同的公式仅将行从一张纸转移到另一张纸上,日期在所述单元格中?

4

2 回答 2

1

我们需要查看您的整个代码才能确定回答这个问题 - 以及您的电子表格的屏幕截图。我建议发布它。

与此同时,我可以对你现在在这里的情况做出合理的猜测。

您需要将自动过滤器的范围调整为包含您的日期的列。现在它正在检查 D 列的“=Name”标准。您可能还必须调整您的标准。到 "=Date" --- "date" 是字符串/文本格式的日期。由于 excel 中的日期通常实际上是数字,因此您可能必须使用实际数字,除非您将日期列转换为字符串/文本 - 我可能会推荐。.offset(2) 看起来很奇怪,你可能也需要调整它。我会假设“A:G”是包含整个表格的范围。

http://www.ozgrid.com/VBA/autofilter-vba-criteria.htm

尝试这个:

With Intersect(Sheet.UsedRange, Sheet.Columns("G")) ' assuming column G contains your dates.    
.AutoFilter Field:=1, "=Date" ' put your date in number or text format here as the criteria

祝你好运。

编辑:试试这个:

.AutoFilter Field:=1, Criteria1:="*/*"
于 2012-08-27T14:49:00.780 回答
0

在表格旁边的列中使用公式,如=ISTEXT(D2) 使用新列根据它是 True 还是 False 进行过滤。这假定列 D 中只有名称或日期,即如果有一个整数,那么这种方法将不起作用。

编辑

您可以使用worksheetfunction. 尝试以下...

Sub test()

With Excel.Application.ActiveWorkbook.Sheets("Sheet1")
            MsgBox (Excel.Application.WorksheetFunction.IsText(.Range("D2")))
End With

End Sub
于 2012-08-27T16:21:41.313 回答