日期-将YYYYDM转换为YYYYDDMM的文本

时间:2018-12-30 07:12:39

标签: excel vba

我将YYYYDM转换为YYYYDDMM时遇到了麻烦 例如:

  • 20011120010101
  • 200123320012303

…等等

格式类似于2001/1/1 I除去了/,现在我得到了200111,但仍然需要它是20010101。我什么都没想。

Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets(2)

Dim k As Long
k = sh.Range("A1", sh.Range("A1").End(xlDown)).Rows.Count

For p = 2 To k
    myString = sh.Cells(p, 1)
    newString = Replace(myString, "/", "")
    sh.Cells(p, 1).Value = newString
Next p

如果你们对此有任何解决方案,我将非常感谢。

2 个答案:

答案 0 :(得分:0)

如安德鲁·莫蒂默(Andrew Mortimer)所言,在日期中保留/并使用格式函数。

format(datevalue("2001/1/1"),"yyyymmdd")

datevalue用于将字符串文字更改为日期。

? format(datevalue("2001/1/1"),"yyyymmdd")
20010101

答案 1 :(得分:0)

添加第二个答案的错误表格,但这是一个纯粹基于字符串的实现,而不是依靠Excel的内置处理。上面的评论中提到了此附加要求。

参数aDate是格式为“ 2001/1/1”的字符串。该函数的结果为“ 20010101”。

Public Function parseDate(aDate As String)

    Dim components() As String

    components = Split(aDate, "/")
    components(0) = Right("0000" & components(0), 4)
    components(1) = Right("00" & components(1), 2)
    components(2) = Right("00" & components(2), 2)
    parseDate = components(0) & components(1) & components(2)

End Function

在VBA IDE中进行测试:

' Sample date
? parseDate("2001/1/1")
20010101

' Date with multiple digits for month and day
? parseDate("2001/12/31")
20011231

' Invalid date, there is no checking for invalid dates
? parseDate("2001/88/99")
20018899