将IF(w / ISTEXT,FIND,MID转换为正确格式)语句转换为自定义VBA函数

我收到了一个不使用一致date格式的同事的工作簿。 下面的IF语句概述了我在创build单个IF语句时的思考过程,该语句可以使用MID和FIND将string或数字转换为适当的date格式:

=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,我有点新手,想创build一个自定义函数来实现上面IF语句中概述的步骤。 任何帮助/指导将不胜感激。

谢谢,

GG

它看起来像你正在转换欧洲到当地的美国date。 有几种方法可以做到这一点:

a)VBAfunction[eg = ConvertDates(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)select列中的date并select:

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

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