excel - 将 IF(使用 ISTEXT、FIND、MID 将日期转换为正确的格式)语句转换为自定义 VBA 函数

标签 excel vba

我收到一位同事发来的工作簿,该同事不使用一致的日期格式。下面的 IF 语句概述了我尝试创建单个 IF 语句的思维过程,该语句可以使用 MID 和 FIND 将字符串或数字转换为正确的日期格式:

=IF(ISTEXT(F49),MID(F49, FIND("/",F49)+1, FIND("/",F49, FIND("/",F49)+1)-FIND("/",F49)-1)&"/"&LEFT(F49,FIND("/",F49,1)-1)&"/"&RIGHT(F49,2),TEXT(F49,"dd/mm/yy"))

我对 VBA 有点新手,想要创建一个自定义函数来实现上面 IF 语句中概述的步骤。任何帮助/指导将不胜感激。

谢谢,

GG

最佳答案

您似乎正在将欧洲日期转换为美国本地日期。有几种方法可以做到这一点:

a) VBA 函数 [例如=转换日期(F49)]:

Function ConvertDates(ValueDate As Range)
Dim Dates() As String
Dates = Split(ValueDate.Text, "/")
ConvertDates = Dates(1) & "/" & Dates(0) & "/" & Dates(2)
End Function

b) 工作表公式(简化版):

=IF(ISTEXT(F49),MID(F49,4,3)&REPLACE(F49,4,5,""),TEXT(F49,"dd/mm/yy"))

c) 在列中选择日期并选择:

数据 > 文本到列 > 下一个 > 下一个 > 列数据格式:DMY

我认为第三个选项可能是最快的,因为您不需要创建新列。

关于excel - 将 IF(使用 ISTEXT、FIND、MID 将日期转换为正确的格式)语句转换为自定义 VBA 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9718832/

相关文章:

excel - 限制 Excel 中的自定形移动

c++ - Excel VBA : "Run-time error ' 4 9': Bad DLL calling convention" calling C++ dll

ms-access - 在 VBA 中,不能使用 Access.Application 对象

excel - 与区域设置之间的转换行为不一致

excel - 在 MS Excel 中找到行中第一个非 n/a 值

Julia 应用程序的 Excel 表?

arrays - 使用 VBA 和 JSON 解析嵌套数组

excel - 如何指向工作表中插入的activeX组合框?

vba - 访问标准 VBA 字枚举

vba - 我的模块结束后 Internet-Explorer 不会关闭