如何使用 VBA 将 mm/dd/yyyy 更改为 dd/mm/yyyy

2024-05-15

我在使用 VBA 将 mm/dd/yyyy 转换为 dd/mm/yyyy 日期格式时遇到问题。

我有一个这样的表:

仅供参考,该表是从报告工具自动生成的。 “字符串操作”或任何 Excel 函数可以提供帮助吗?希望知道如何解决这个问题的人可以给我一些想法。


好吧,从你提出问题的方式来看,我不相信你真的想要或需要 VBA。

查看您发布的图像,第一个单元格包含该字符串05/06/2013 - 05/10/2013不是日期05/06/2013。因此,您需要做的第一件事就是拆分各个部分,以便内置的 Excel 或 VBA 函数可以对其进行转换。

通过 Excel 公式

因此我们可以使用 SEARCH 或 FIND 来查找“-”并动态执行操作。但我感觉很懒,所以我假设字符串的前 10 个字符是第一个日期,最后 10 个字符是第二个日期。如果前后有多余空格,源字符串上的 TRIM 函数应该会更安全一些。

所以如果我们的字符串05/06/2013 - 05/10/2013在单元格 A2 中,我们可以输入=LEFT(TRIM(A2),10)在 B2 和=RIGHT(TRIM(A2),10) in C2.

现在这些仍然是字符串。通常我会使用 DATEVALUE 将字符串转换为日期,但我的 Excel 副本不喜欢那些疯狂的无意义*日期格式。因此我们将把日期解析到 DATE 函数中。推杆=DATE(RIGHT(B2,4),LEFT(B2,2),MID(B2,4,2)) and =DATE(RIGHT(C2,4),LEFT(C2,2),MID(C2,4,2))分别进入单元格C2和D2。

从这里,我们可以使用 TEXT 函数(很像 VBA 中的格式函数)和一些字符串连接将它们重新组合成原始的单单元格日期范围格式。假设这就是期望的结果。

所以我们的最后一个单元格 F2 是=TEXT(D2,"dd/MM/yyyy") & " - " & TEXT(E2,"dd/MM/yyyy")。我们当然可以将所有这些公式组合成一团乱麻,如下所示:

=TEXT(DATE(RIGHT(LEFT(A2,10),4),LEFT(LEFT(A2,10),2),MID(LEFT(A2,10),4,2)),"dd/MM/yyyy") & " - " & TEXT(DATE(RIGHT(RIGHT(TRIM(A2),10),4),LEFT(RIGHT(TRIM(A2),10),2),MID(RIGHT(TRIM(A2),10),4,2)),"dd/MM/yyyy")

通过 Visual Basic 应用程序

这里的过程是相同的,只是使用 VBA 函数和语法而不是 Excel 公式。 现在,无论出于何种原因,VBA 版本的 DateValue 将接受我的 Excel 副本中的这些日期。所以我会用它。

Public Function ChangeDateFormat(inputString As String) As String
  Dim firstDate As Date
  Dim secondDate As Date
  Dim trimmedInput As String
  trimmedInput = Trim$(inputString)
  firstDate = DateValue(Left$(trimmedInput, 10))
  secondDate = DateValue(Right$(trimmedInput, 10))

  ChangeDateFormat = Format(firstDate, "dd\/MM\/yyyy") & " - " & Format(secondDate, "dd\/MM\/yyyy")
End Function

Public Sub Test()
  Sheet1.[B2] = ChangeDateFormat(Sheet1.[A2])
End Sub

这可以通过运行提供的 Test sub 进行测试,或者 ChangeDateFormat 可以用作 Excel 公式中的用户定义函数=ChangeDateFormat(A2).

注意,在传递给 Format 的日期格式中,我转义了日期分隔符\/而不是仅仅把/这是因为Format函数会自动替换/与 Windows 设置中的日期分隔符。由于我使用现代计算机友好的日期格式,我的分隔符是破折号......

Footnote

* 如果人们只使用,生活会变得容易得多ISO 8601 http://en.wikipedia.org/wiki/ISO_8601。它的存在是有原因的,一个很好的理由。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 VBA 将 mm/dd/yyyy 更改为 dd/mm/yyyy 的相关文章

随机推荐

  • OpenArgs 为空问题

    我正在使用OpenArgs使用时发送值的参数DoCmd OpenForm DoCmd OpenForm frmSetOther acNormal acFormAdd acDialog value 然后我用Me OpenArgs在打开的表格内
  • 从元素中删除 jquery imgareaselect 插件

    所以我使用这个简洁的 jquery 插件http odyniec net projects imgareaselect http odyniec net projects imgareaselect 它工作正常 但我用 jquery ui
  • 如何在 Google App Engine 的 Python 中获取 StringProperty 的值?

    如何获取 nbd Model 的值 我想返回由多个字段组成的描述 但我无法让它工作 这是我的班级代码 class User ndb Model name ndb StringProperty email ndb StringProperty
  • 当 MIDL 无法创建 tlb 时该怎么办?

    我正在尝试创建一个 C inproc 服务器sbtsv idl 它包含在 Windows 8 SDK 中 几乎我的每一个指示 https stackoverflow com questions 1307675 convert interfa
  • 执行页面的 javascript 后保存页面的 html 输出

    我正在尝试抓取一个网站 它首先加载 html js 使用js修改表单输入字段 然后使用POST 如何获得 POSTed 页面的最终 html 输出 我尝试使用 phantomjs 执行此操作 但它似乎只有渲染图像文件的选项 谷歌搜索表明这应
  • 在使用第三方东西时如何保持 Browserify 包大小合理(如果重要的话通过 grunt )

    我正在尝试捆绑我自己的代码 A 该代码又使用 2 个第三方组件 B 和 C 其中 C 也需要 B 据我所知 所有内容都是使用 CommonJS 节点样式模块编写的 捆绑后单独使用的价格为 60K B 是单独包含的 并假定是全局的 我通过在构
  • css 字体 twitter 像关闭按钮一样,我错过了什么?

    twitter 有一个关闭按钮 它是单个字符 x 我需要类似的东西 但是在我检查之后 span x span 我按照 firebug 告诉我的那样创建 css 规则 close button font family Tahoma Arial
  • GLSL NVidia 方形神器

    当 GLSL 着色器在以下 GPU 上生成不正确的图像时 我遇到了问题 GT 430 GT 770 GTX 570显卡760 但在这些上正常工作 英特尔高清显卡 2500英特尔高清4000英特尔4400显卡740MRadeon HD 631
  • htaccess 重写 url 删除子目录

    我正在尝试重写 http www example com directory folder to http www example com directory htaccess 文件位于directory 这是我的 htaccess 文件
  • TextView 宽度匹配drawableTop 宽度

    有什么办法可以使TextView width匹配复合可绘制宽度 XML 例如对于 xml 代码
  • 这个按位运算如何检查 2 的幂?

    我正在看一些应该很简单的代码 但我的数学在这里严重失败 下面是一个使用以下条件检查数字是否为 2 的幂的条件 if num 1 num num 1 make num pow of 2 我的问题是 如何在 num 和 num 1 之间使用按位
  • 在正常运行时间较长后,服务器端 SignalR 连接失败

    我在 StackOverflow 上搜索了许多与 SignalR 连接相关的其他问题 但似乎都不适用于我的具体情况 我有一个使用 SignalR 集线器的应用程序 客户端可以使用两种方法连接到集线器 通过使用底层客户端连接到集线器的 NET
  • 在 Angular 单元测试中应该如何处理运行块?

    我的理解是 当您在 Angular 单元测试中加载模块时 run块被调用 我认为如果你正在测试一个组件 你不会想同时测试run块 因为unit测试应该只是测试一个unit 真的吗 如果是的话有什么办法可以防止run阻止运行 我的研究让我认为
  • iOS 11 浮动 TableView 标题

    有一个应用程序包含多个部分 展开 时每个部分有几行 折叠 时没有 每个部分都有一个部分标题 使用以下子类重用它们UITableViewHeaderFooterView等等 到目前为止一切顺利 然后在 iOS 11 中 我使用了可视化调试器
  • 如何使用 Python 裁剪图像中的矩形

    谁能给我关于如何裁剪两个矩形框并保存它的建议 我已经尝试过这段代码 但效果不佳 import cv2 import numpy as np Run the code with the image name keep pressing spa
  • Runtime.exec 处理包含多个空格的参数

    我怎样才能进行以下运行 public class ExecTest public static void main String args try Notice the multiple spaces in the argument Str
  • Microsoft Office Url 协议的详细信息?

    Microsoft Office 文档在客户端计算机上注册自定义 url 协议 SharePoint 特别使用此功能 例如 如果我打开一个 Excel 文件 我会看到对此 url 的调用 ms excel ofv u https mycor
  • 如何向 Time.now 添加两周?

    如何在 Ruby 中向当前 Time now 添加两周 我有一个使用 DataMapper 的小型 Sinatra 项目 在保存之前 我有一个字段填充了当前时间加上两周 但未按需要工作 任何帮助是极大的赞赏 我收到以下错误 NoMethod
  • 将 android 蓝牙客户端套接字连接到 ubuntu 服务器套接字时出现问题

    我正在编写一个 Android 应用程序 它应该通过蓝牙与服务器交换数据 服务器端位于运行 Ubuntu 的 PC 上 使用 bluez 库 用 C 或 C 编写 当我尝试连接到 PC 上的服务器套接字时 我的 Android 应用程序失败
  • 如何使用 VBA 将 mm/dd/yyyy 更改为 dd/mm/yyyy

    我在使用 VBA 将 mm dd yyyy 转换为 dd mm yyyy 日期格式时遇到问题 我有一个这样的表 仅供参考 该表是从报告工具自动生成的 字符串操作 或任何 Excel 函数可以提供帮助吗 希望知道如何解决这个问题的人可以给我一