首页 > 解决方案 > 将文本转换为日期格式为 yyyy/mm/dd

问题描述

当从我们的系统导出报告时,日期显示为“yyyy / 月份名称”。

我尝试通过在 Excel > Home 选项卡上创建自定义格式将它们更改为日期格式。只有当我单击一列并将其转换为文本时,它才会更改为日期格式,从一般的“2015 March”变为日期 2015/03/01。

自定义格式不起作用
在此处输入图像描述

我现在正在尝试运行一个宏来将包含这些月/年日期的所有列转换为文本,因为我发现没有其他方法可以修复 1004 消息。

Sub Text_to_columns()
'
' Text_to_columns Macro
'

'
Range("H2").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Replace What:=" / ", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
        

Dim col As Range
Dim i As Integer
For i = 8 To 300
    
    Selection.TextToColumns Destination:=Cells(2, i), DataType:=xlDelimited, _
      TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
      Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
      :=Array(1, 5), TrailingMinusNumbers:=True

Next i

End Sub

表明

1004错误
微软一次只能转换一列

我怎样才能解决这个问题?是否有另一种方法可以将这些文本转换为日期?

标签: excelvba

解决方案


您的问题不清楚,但我认为您想将这些单元格中的文本值更改为日期格式,以某种定义的方式格式化。

我建议类似(并且您必须更改一些常量以适应您的具体情况):

Option Explicit
Sub convToDate()
    Const firstCol As Long = 8
    Dim lastCol As Long
    Const myRow As Long = 2
    Dim WS As Worksheet
    Dim I As Long, x As Variant
    
'Set worksheet variable
Set WS = ThisWorkbook.Worksheets("sheet1")

'Find the last column
With WS
    lastCol = .Cells(myRow, .Columns.Count).End(xlToLeft).Column

'convert contents to date
    For I = firstCol To lastCol
        x = .Cells(myRow, I)
        If IsDate(x) Then .Cells(myRow, I) = CDate(x)
    Next I
    '.Range(.Cells(myrow,firstcol),.Cells(myrow,lastcol)).NumberFormat = "whatever format you want"
    'If you really want to convert these to text, use the VBA Format function

End With

End Sub

推荐阅读