Excel FeilInfo不起作用的简单文本到列
我正在尝试使用TextToColumns将分隔字段格式化为 年/月/日HH:MM (excel仅将其视为文本,而不是日期-它由空格分隔) 公正 年月日 我想从第二个单元格开始,对电子表格的整个第二列执行此操作 到目前为止,我将第二列设置为范围(我将B2设置为B2000,因为我不想影响B1)。我指定数据用空格分隔,第一列需要格式化为数据类型6,第二列需要跳过Excel FeilInfo不起作用的简单文本到列,excel,vba,Excel,Vba,我正在尝试使用TextToColumns将分隔字段格式化为 年/月/日HH:MM (excel仅将其视为文本,而不是日期-它由空格分隔) 公正 年月日 我想从第二个单元格开始,对电子表格的整个第二列执行此操作 到目前为止,我将第二列设置为范围(我将B2设置为B2000,因为我不想影响B1)。我指定数据用空格分隔,第一列需要格式化为数据类型6,第二列需要跳过 'define and set range Dim rng As Range Set rng = Range("B2:B2000") '
'define and set range
Dim rng As Range
Set rng = Range("B2:B2000")
'use Text To Columns
rng.TextToColumns Destination:=rng, DataType:=xIDelimited, TextQualifier:=xlTextQualifierDoubleQuote,
Space:=True,
FieldInfo:=Array(Array(1, 6), Array(2, 9))
当我运行代码时,什么都没有发生。没有错误,但也没有结果请尝试一下:
Sub dural()
Dim rng As Range, r As Range, v As String, d As Date
Set rng = Range("B2:B2000")
For Each r In rng
v = r.Text
If InStr(1, v, "/") > 0 Then
arr = Split(v, " ")
brr = Split(arr(0), "/")
d = DateSerial(brr(2), brr(0), brr(1))
r.Clear
r.Value = d
r.NumberFormat = "dd/mm/yyyy"
End If
Next r
End Sub
之前:
及之后:
您的代码中有一个输入错误: 您有:
DataType:=xIDelimited
应该是:
DataType:=xlDelimited
当我使用手册“文本到列向导”时,当我选择“空格”作为分隔符时,它会起作用。我不认为excel将日期视为真实日期-只是一个文本假设B2:B2000
包含Date
值(似乎是这样),=日期(年(B2)、月(B2)、日(B2))
用于日期部分,而=时间(小时(B2)、分钟(B2)、秒(B2))
用于时间部分。不需要任何VBA或向导;日期的显示方式应该是一种简单的NumberFormat
…如果可以的话,不要将日期视为文本。我想将其作为VBA编写,这样它就可以成为更大脚本的第一部分。excel不将这些值视为日期值,只将它们视为文本,因此我需要使用“文本到列”选项。简单地将单元格重新格式化为日期格式没有任何作用。我正在使用第三方提供的电子表格,因此我无法决定收到日期时如何处理这些日期-这就是为什么我希望编写代码,自动为我处理这些日期。如果您有一个输入错误:应该是:DataType:=xlDelimited
,如果您有选项显式
,您会得到提醒。我不明白为什么MS将不需要变量声明作为默认值。选择Tools/Options/Editor
并选中Require Variable Declaration
。这将在任何新模块的开始处放置选项Explicit
。若要更正此模块,请在开始处手动输入。@ScottCraner TTC在此处使用true dates,并使用空格分隔符(无论是通过VBA还是在工作表上)从时间分割日期。