excel - 将文本转换为日期格式为 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错误
微软一次只能转换一列
我怎样才能解决这个问题?是否有另一种方法可以将这些文本转换为日期?
解决方案
您的问题不清楚,但我认为您想将这些单元格中的文本值更改为日期格式,以某种定义的方式格式化。
我建议类似(并且您必须更改一些常量以适应您的具体情况):
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
推荐阅读
- r - 将 aa 字符列转换为具有多种格式的日期
- scala - 如何缩小列表但保证它不为空?
- maven - 无法使用 Maven Archetype 为 opendaylight 创建项目
- performance - 在 Ubuntu 16.04 上输入时 Android Studio 变得迟钝
- php - 在 laravel 中找不到类路径
- c# - 如何解决以下代码的错误?
- reactjs - 在 React Native 中重新获取和重新渲染组件
- mysql - UNIX_TIMESTAMP MYSQL,无法获得正确的查询
- nightwatch.js - 在 Windows PC 上获取“错误:未定义源文件夹。检查配置”
- react-native - React Native Admob 插件 - 使用最新的 React Native 构建失败