使用vba输入函数:使用i行连接列

时间:2016-04-14 21:57:54

标签: excel vba

我正在尝试从字符串中提取日期:

  

2月25日星期四16:13:15太平洋标准时间2016

我的宏进入该函数,但是,它没有正确地将列与i连接,因此它将用于特定的行号。 相反,我得到了这个:

  

= CONCATENATE(MID(" J"& i,5,6),",",RIGHT(" J"& i,4 ))

请帮我连接。谢谢

Sub FormatDate()
    FinalRow = Cells(Rows.Count, 12).End(xlUp).Row
    For i = 3 To FinalRow
    Cells(i, 12).Formula = "=CONCATENATE(MID(""B"" & i,5,6),"","",RIGHT(""B"" & i,4))"
    Next i
End Sub

2 个答案:

答案 0 :(得分:1)

你的报价在错误的地方:

Cells(i, 12).Formula = "=CONCATENATE(MID(B" & i & ",5,6),"","",RIGHT(B" & i & ",4))"

答案 1 :(得分:1)

这是一种有点不同的方法,可以产生真实的"日期,您可以在计算中使用,而无需在单元格中输入公式。我确实将其格式化为与公式的结果相同,但您可以根据需要对其进行格式化。

Option Explicit
Sub FormatDate()
Dim FinalRow As Long
Dim V As Variant
Dim I As Long

    FinalRow = Cells(Rows.Count, 12).End(xlUp).Row
    For I = 3 To FinalRow
        V = Split(Cells(I, "B"))
        V(1) = Month(DateValue(V(1) & " 01")) 'Change month string into number.

        Cells(I, 12) = DateSerial(V(5), V(1), V(2))
        Cells(I, 12).NumberFormat = "mmm dd yyyy"
    Next I

End Sub

还有其他处理日期的方法:

For I = 3 To FinalRow
    V = Split(Cells(I, "B"))
    Cells(I, 12) = DateValue(V(1) & " " & V(2) & " " & V(5))
    Cells(I, 12).NumberFormat = "mmm dd yyyy"
Next I