Excel:在列中获取/过滤无效date

需要重新导入“常规”中的无效date。

以下只是超过一百万行的一部分。 与“常规”数据types中的有效date格式和数字date混合在一起。

Excel应该只在列中使用数据types“常规”进行过滤。 可以一个一个做,但如前所述,logging多less在1m以内。

3/25/64 4/7/59 22231 22653 19636 16257 1/1/63 8/28/49 

我已经通过在单独的表中导入它,然后使用sqlvalidationdate来解决此问题。 只是想知道如何通过Excel来做到这一点。

更新(布伦特黑客样本):

我试图修改布伦特的例子。 但它复制了整个excel。

脚本Public Sub CopyRows() Dim icol As Integer Dim irow As Integer icol = 0 While ActiveSheet.Range("N1").Offset(0, icol) <> "" irow = 0 While ActiveSheet.Range("N1").Offset(irow, icol) <> "" If Selection.NumberFormat = "General" Then Worksheets("Sheet1").Range("A1:AB1").Offset(irow, icol).Copy _ Destination:=Worksheets("Sheet2").Range("A1").Offset(irow, icol) irow = irow + 1 End If Wend icol = icol + 1 Wend End Sub

不是很多继续下去。

你能用这样的东西吗?

 Dim icol As Integer Dim irow As Integer icol = 0 While ActiveSheet.Range("A1").Offset(0, icol) <> "" irow = 0 While ActiveSheet.Range("A1").Offset(irow, icol) <> "" If Selection.NumberFormat = "General" Then ActiveSheet.Range("A1").Offset(0, icol).EntireColumn.NumberFormat = "mm/dd/yy" irow = irow + 1 Wend icol = icol + 1 Wend 

好的 – 在对您的问题进行编辑之后,我想出了这个问题

 Public Sub moveBadDatesToNewSheet() Dim icol As Integer Dim irowSrc As Integer Dim irowTgt As Integer Dim srcWS As Worksheet Set srcWS = ActiveSheet icol = 0 Sheets.Add Set tgtWS = ActiveSheet While srcWS.Range("A1").Offset(0, icol) <> "" irowSrc = 0 irowTgt = 0 While srcWS.Range("A1").Offset(irowSrc, icol) <> "" If InStr(1, srcWS.Range("A1").Offset(irowSrc, icol), "/") = 0 Then tgtWS.Range("A1").Offset(irowTgt, icol) = srcWS.Range("A1").Offset(irowSrc, icol) irowTgt = irowTgt + 1 End If irowSrc = irowSrc + 1 Wend icol = icol + 1 Wend End Sub 

这将采取每个非格式的date,并将其放入一个新的工作表。 这是你要求的吗?