首页 > 解决方案 > Excel VBA 日期替换

问题描述

我在单元格中有一些日期作为 ISO 标准 (YYYY/MM/DD),但我被要求将其更改为 DD MMMMMMMM YYYY,例如 2018 年 1 月 1 日。

一个单元格中有多个日期,我检查了几个站点,但找不到一些可用于搜索 YYYY/MM/DD 格式并更改为 DD MMMMMMMM YYYY 的 VBA。

有人会知道一些 VBA / 链接,它们可以帮助一次性更改所有日期,而不是手动更改。

[当前状态和所需输出的示例]

目前我已经尝试过,但我的 VBA 充其量低于新手,因此无法对以下解决方案进行逆向工程。 https://www.myonlinetraininghub.com/6-ways-to-fix-dates-formatted-as-text-in-excel

https://www.ozgrid.com/forum/.../excel.../93919-search-and-replace-date-with-vba

https://stackoverflow.com/.../find-replace-macro-that-properly-formats-a-date-cell

https://webcache.googleusercontent.com/search?q=cache:EIyJ2TGgqQMJ:https://answers.microsoft.com/en-us/msoffice/forum/msoffice_excel-msoffice_custom-mso_2007/find-and-replace-date-在-vba-保留格式/64377177-9b0f-4118-81ed-49d8f9ddc8f4+&cd=6&hl=en&ct=clnk&gl=uk

编辑:使用下面的 Karthick 解决方案输出。唯一的问题是第一个日期已更改,但 ALT+Enter 的换行符丢失并且格式不正确。

在此处输入图像描述

标签: vbaexceldateexcel-2010

解决方案


试试下面的公式

=TEXT(LEFT(C2,10),"DD MMMMMMMM YYYY")&MID(C2,11,LEN(C2))

输出

在此处输入图像描述

编辑

请使用 vba 代码来获得您想要的结果。

Sub test()
    Dim a, b As String
    Dim str1, str2 As Long
    a = Range("C2").Value
    str1 = Split(a, Chr(10))
    str2 = UBound(str1)
    For i = 0 To str2
        b = b & Format(Left(str1(i), 10), "DD MMMM YYYY") & Mid(str1(i), 11, Len(str1(i))) & Chr(10)
    Next i
    Range("D2").Value = b
End Sub

VBA 输出

在此处输入图像描述


推荐阅读