将excel列转换为文本时的日期问题

将excel列转换为文本时的日期问题,excel,vba,excel-2010,Excel,Vba,Excel 2010,我有一个excel文件,其中一列将包含数字、字符串、日期等数据。我想使用VBA将该列转换为文本 代码:(这里我尝试将A列转换为文本) 问题: 运行上述代码后,一列被转换为文本,但对于日期值,月份和日期部分被交换,零被删除。 示例:29/03/2033---转换为-->3/29/2033。而字符串、数字等其他数据则以文本形式存储,没有任何问题。请帮我做这个。我想要与文本相同的数据,例如:29/03/2033-->29/03/2033 输入文件: 首先,请务必小心您的代码,它会更改工作簿中每个工作

我有一个excel文件,其中一列将包含数字、字符串、日期等数据。我想使用VBA将该列转换为文本

代码:(这里我尝试将A列转换为文本)

问题: 运行上述代码后,一列被转换为文本,但对于日期值,月份和日期部分被交换,零被删除。 示例:29/03/2033---转换为-->3/29/2033。而字符串、数字等其他数据则以文本形式存储,没有任何问题。请帮我做这个。我想要与文本相同的数据,例如:29/03/2033-->29/03/2033

输入文件:


首先,请务必小心您的代码,它会更改工作簿中每个工作表的A列

试试这段代码,它会将列的每个单元格转换为文本,然后将列类型转换为文本

Dim rngColumn As Range
Dim cel As Variant
Dim usdRng As Long
Dim arr() As String
Dim count As Long
Dim xWs As Worksheet
' It's looping through the worksheets

Application.Calculation = xlCalculationManual
For Each xWs In Application.ActiveWorkbook.Worksheets
    'get last used row number
    usdRng = xWs.UsedRange.Rows.count
    Set rngColumn = xWs.Range("A1:A" & CStr(usdRng))
    
    ReDim arr(1 To usdRng)
    
    xWs.Range("A:A").Columns.AutoFit

    count = 1
    For Each cel In rngColumn
        arr(count) = cel.Text
        count = count + 1
    Next
    xWs.Range("A:A").NumberFormat = "@"
    xWs.Range("A1:A" & CStr(count-1)).Value = Application.Transpose(arr)
    
Next

Application.Calculation = xlCalculationAutomatic
ActiveWorkbook.Save

单元格的确切值是多少?我已经用输入文件更新了问题,请检查。我在上面的文件中找不到字符串值
29/03/2033
?请检查值:02-07-2068没有ti。如果你能看到它,然后共享单元格地址对不起,我忘了提到,我的要求是更改工作簿中每个工作表的A列。我尝试了上面的代码,对于某些日期值,它工作正常,但是对于某些日期值,它正在转换为数字。例如:02-07-2068将改为61400。输入文件:Hi@prabhahar我根据输入文件编辑了代码。尝试一下,让我知道它是否工作。嗨,罗德里戈谢谢你的帮助,上面的代码工作正常。嗨,罗德里戈,我已经更新了输入文件。在输入文件中,我必须将每个工作表的“G”列转换为文本,所以我只是更改了上面的代码,其中一列引用了G。但是当我在工作表2中运行脚本时,一些日期值被更改为#####。请帮我解决这个问题。这可能是collumn宽度,我编辑了上面的代码,再次将列更改为G,它将正常工作
Dim rngColumn As Range
Dim cel As Variant
Dim usdRng As Long
Dim arr() As String
Dim count As Long
Dim xWs As Worksheet
' It's looping through the worksheets

Application.Calculation = xlCalculationManual
For Each xWs In Application.ActiveWorkbook.Worksheets
    'get last used row number
    usdRng = xWs.UsedRange.Rows.count
    Set rngColumn = xWs.Range("A1:A" & CStr(usdRng))
    
    ReDim arr(1 To usdRng)
    
    xWs.Range("A:A").Columns.AutoFit

    count = 1
    For Each cel In rngColumn
        arr(count) = cel.Text
        count = count + 1
    Next
    xWs.Range("A:A").NumberFormat = "@"
    xWs.Range("A1:A" & CStr(count-1)).Value = Application.Transpose(arr)
    
Next

Application.Calculation = xlCalculationAutomatic
ActiveWorkbook.Save