我有这个公式来搜索名称并将该行移动到另一张表:
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
有没有办法使用这个相同的公式只将一行中的行从一张纸转移到另一张纸上?
答案 0 :(得分:1)
我们需要查看您的整个代码以确定回答此问题 - 以及电子表格的屏幕截图。我建议发布它。
与此同时,我可以合理地猜测你现在的情况。
您需要将自动过滤器的范围调整为包含日期的列。现在它正在检查D列的标准为“=名称”。您可能还需要调整标准。到“=日期”---“日期”是您的日期是字符串/文本格式。由于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:="*/*"
答案 1 :(得分: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