需要在" General"中重新导入无效日期。
以下只是超过一百万行的一部分。与" General"中的有效日期格式和数字日期混合数据类型。
Excel只应过滤数据类型"一般"在一列中。可以一个接一个地做,但如前所述,记录或多或少在1米内。
3/25/64
4/7/59
22231
22653
19636
16257
1/1/63
8/28/49
我已经通过在单独的表中导入然后使用sql验证日期来解决这个问题。只是想通过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
答案 0 :(得分:1)
不是很多。
你能用这样的东西吗?
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
这将采用每个非格式化日期并将其放入新工作表中。这是你要的吗?