如何将多列从文本转换为日期?

时间:2012-07-22 10:54:51

标签: excel vba excel-vba excel-2007

在我的Excel文件中,有一百列。我想将一些列(例如,列A,C,F,G ..)从文本转换为日期。如果手动将每列一列一列地更改,确实需要时间。 我该怎么做 ?通过使用VBA?

原始文本列格式就像'31 -Dec-2011 00:00:00'。我想转换为'dd / mm / yyyy'31 / 12/2011

由于

3 个答案:

答案 0 :(得分:0)

如果你真的想在每个单元格中关闭时间,那么这可能是一种方法:

如果目标时间位于名为“target”的工作表的A列中,而A1中的列标题是“StartTime”

您可以修改以下内容并添加一个参数,以便它获取列地址。然后可以多次调用它来在多个列上执行此操作。

Sub ChopOffTime()

dim mySheetName as string
mysheetname = "target" '<<<<change to your sheet name

myLstRow = Excel.ActiveWorkbook.Sheets(mysheetname ).Cells(Excel.ActiveWorkbook.Sheets(mysheetname ).Rows.Count, Excel.ActiveWorkbook.Sheets(mysheetname).Range("A2").Column).End(Excel.xlUp).Row
With Excel.ActiveWorkbook.Sheets(mysheetname)

            .Columns("B:B").Insert Excel.xlToRight
            .Range("B2:B" & myLstRow).FormulaR1C1 = "=TIME(HOUR(RC[-1]),MINUTE(RC[-1]), SECOND(RC[-1]))"
            .Range("B1") = "StartTime" '<<<<<change to appropriate header
            .Columns("B:B").Copy
            .Columns("A:A").PasteSpecial Excel.xlPasteValues
            .Columns("B:B").Delete Excel.xlToLeft

End With

End Sub

答案 1 :(得分:0)

对相关列使用以下内容:

Columns("A:A").Select
    Selection.NumberFormat = "m/d/yyyy"

答案 2 :(得分:0)

谢谢大家。

为简化程序,我刚开发了一些宏供用户运行以更改列格式,然后他们可以导入excel mdb而不会出错。