错误date和时间文本到列macrosExcel VBA

我在编码macros时遇到了麻烦,要将具有date和时间信息的单元格分隔到具有TexttoColumns公式的列中。 这是我在列中的信息。

开始date

1900-01-01(00:00)

2008-09-25(12:46)

我想要所有的列,但标题被拆分,在一列中的date和在下一个小时。

在我有macros,我能find我想分裂的列,我创build新的列正确的右侧。 但是,我无法做到列公式的文字。 这是我有的代码:

Sub Separate_Date() Cells.Find(What:="Fecha Inicio Proceso", After:=Cells(1, 1), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate Col = ActiveCell.Column LastRow = ActiveCell.End(xlDown).Row Cells(ActiveCell.Row, ActiveCell.Column + 1).EntireColumn.Insert Columns(Col).Select Range(Selection, Selection.End(xlDown)).Select ********Selection.TextToColumns Destination:=Range(Cells(2, Col), Cells(LastRow, Col)), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _ :=" ", FieldInfo:=Array(Array(1, 4), Array(2, 4)), TrailingMinusNumbers:=True End Sub 

我的代码停在标有****的行中。 它显示错误“运行时错误,目标引用无效”。

我想我的问题是在范围部分,但我一直没能find任何解决scheme在网站上。

不需要这个VBA。 在几个步骤,你可以有你想要的。 假设数据在Col A.如果你仍然想要 VBA然后logging下面的步骤的macros,并简单地修改它。 🙂

  1. select上校
  2. 点击Data|Text To Columns|Delimited并selectSpace作为分隔符。

在这里输入图像说明

  1. 点击完成
  2. select列B.按CTRL + H。 首先replace(没有东西,然后replace)没有任何东西

在这里输入图像说明

  1. 在列A中重新input标题并从列B中删除它

在这里输入图像说明

希望你的date是真正的date,或者可以使用Cdate([date as string])函数转换成真正的date。 一个真正的date是一个doubletypes的数字,如42896.417349537,整数是一天,小数表示时间。 基本上,您可以在两列中使用完全相同的编号,但格式不同。 “mm-dd-yyyy”不会显示时间,“hh:mm:ss”不会显示date。

然而,如果你想分开这些值,显然Int(42896.417349537)将产生一个没有时间的date,并且42896.417349537 - Int(42896.417349537)将产生表示时间的数字。 在这两种情况下,您仍然可以通过格式来控制显示,即Numberformat属性。

实际上,这在工作表上比在VBA中简单得多。 除非是反复出现的任务,否则我build议使用工作表函数和单元格格式来完成这一切。

你不需要所有的代码来分开它们…你可以使用格式$()

试试这个单元格:

 Public Sub SplitDateTime(lRow As Long, lColumn As Long) If IsDate(ActiveSheet.Cells(lRow, lColumn)) Then Dim dt As Date dt = ActiveSheet.Cells(lRow, lColumn) MsgBox "Date: " & Format$(dt, "yyyy-mm-dd") & " Time: " & Format$(dt, "hh:mm:ss") Else MsgBox "This is not a date cell- Row:" & lRow & " - Column:" & lColumn & " - Value:" & ActiveSheet.Cells(lRow, lColumn) End If End Sub 

也许,

 Sub Separate_Date() Dim rngF As Range, Lastrow As Long, i As Long Dim Col As Integer Dim vR(), vSplit, vDB Set rngF = Cells.Find(What:="FechaInicio Proceso", LookIn:=xlValues, LookAt:=xlWhole) Col = rngF.Column Lastrow = rngF.End(xlDown).Row rngF.Offset(, 1).EntireColumn.Insert vDB = Range(Cells(2, Col), Cells(Lastrow, Col)) ReDim vR(1 To UBound(vDB, 1), 1 To 2) For i = 1 To UBound(vDB, 1) vSplit = Split(vDB(i, 1), "(") vR(i, 1) = Trim(vSplit(0)) vR(i, 2) = Trim(Replace(vSplit(1), ")", "")) Next i Cells(2, Col).Resize(UBound(vR, 1), 2) = vR Columns(Col + 1).NumberFormatLocal = "hh:mm" End Sub