将一个variables传递给Left(string,VariableHere)不起作用

我有一个数据导入文件,没有逗号的date(即January 1 2015 )。 Excel不会将其识别为date,我需要使用这些date来查找其他date(例如,date+行程的长度以查找行程的最后一天等)

我试图使用VBA来完成这一点,并有逻辑,但我遇到了一个错误。

我把date的长度( January 1 2015 ),右边的5个字符( 2015 ),左边的全长减去右边的5个字符( JANUARY 1 ),然后用插入的逗号组合这些variables: Left(value-5) & ", " & Right(value, 5)

我正在使用这个代码:

  'correct date from JANUARY 1 2000 to JANUARY 1, 2000 so excel can recognize as date LengthTrpDpt = Len(wb1.Sheets("BL Import").Cells(ioi, TrpDepCol)) 'length of date LengthRightTrpDPt = Right(wb1.Sheets("BL Import").Cells(ioi, TrpDepCol), 5) 'finds right 5 of date " 2015" NewListedDate = Left(wb1.Sheets("BL Import").Cells(ioi, TrpDepCol), LengthTrpDpt - 5) & ", " & LengthRightTrpDPt 

问题是与NewListedDatevariables。 我可以将部分LengthTrpDpt – 5更改为一个数字,它工作正常。 出于某种原因,我不能在这里有一个公式。 我试着在一个单独保存的variables(LengthMath = LengthTrpDpt – 5)中执行公式,并使用LengthMath,但是这也不起作用。

LengthTrpDpt工作正常,MsgBox的正确数字。 有任何想法吗? 谢谢!

你应该只是Split()datestring来得到你的三个部分,然后把它们重新拼凑在一起,但是你想:

 Dim a a = Split(wb1.Sheets("BL Import").Cells(ioi, TrpDepCol)) NewListedDate = a(0) & " " & a(1) & ", " & a(2) 

在text-that-look-like-dates的列上使用Range.TextToColumns方法 。

 with worksheets("Sheet1").columns(1) '<-change this to reflect the actual worksheet and column .TextToColumns Destination:=.cells(1,1), DataType:=xlFixedWidth, FieldInfo:=Array(0, 3) end with 

0告诉T2C它应该把所有东西都放回到原来的列中。 3是MDY TextFileColumnDataTypes属性 。

不pipe怎样,使用数字和date总是比较好,而不是用近似的string表示。