Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel FeilInfo不起作用的简单文本到列_Excel_Vba - Fatal编程技术网

Excel FeilInfo不起作用的简单文本到列

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") '

我正在尝试使用TextToColumns将分隔字段格式化为

年/月/日HH:MM (excel仅将其视为文本,而不是日期-它由空格分隔)

公正

年月日

我想从第二个单元格开始,对电子表格的整个第二列执行此操作

到目前为止,我将第二列设置为范围(我将B2设置为B2000,因为我不想影响B1)。我指定数据用空格分隔,第一列需要格式化为数据类型6,第二列需要跳过

'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还是在工作表上)从时间分割日期。