EXCEL VBA FUNCTION自定义函数,高分求助,高手来帮忙!

高分求4个VBAFUNCTION自定义函数的编写方法以,请网上的老师来帮忙!如图,A列是原始数据,A列的每个单元格中,有的单元格里只有一行文本,有的单元格里有多行文本。有... 高分求4个VBA FUNCTION自定义函数的编写方法以,请网上的老师来帮忙!

如图,A列是原始数据,A列的每个单元格中,有的单元格里只有一行文本,有的单元格里有多行文本。
有多行文本的单元格,每行以自动换行符CHAR(10)分开。
求:
1、自定义函数sDate,从A1中第14个字符开始,向后提5个字符,得到19DEC(日期和月份),将此日期加上年份,格式为"YYYY-MM-DD",如单元格中有多行,每行都需要提出。

2、 自定义函数sNum,提出A列单元格中前6个字符,如单元格中有多行,每行都需要提出。

3、自定义函数dTime,从A1中第34个字符开始,向后提4个字符,并将中单加上冒号,如单元格中有多行,每行都需要提出。

4、自定义函数aTime,从A1中第39个字符开始,向后提4个字符,并将中单加上冒号,如单元格中有多行,每行都需要提出。
展开
 我来答
K_BEAT
2015-03-10 · TA获得超过1245个赞
知道小有建树答主
回答量:879
采纳率:91%
帮助的人:395万
展开全部

>> Q1★sDate

Public Function sDate(ByVal Target As Range) As String
    sDate = Format$(Evaluate("=DATEVALUE(MID(" & Target.Address(False, True) & ",14,5))"), "yyyy-MM-dd")
End Function


>> Q2★sNum

Public Function sNum(ByVal Target As Range) As String
    sNum = Evaluate("=LEFT(" & Target.Address(False, True) & ",6)")
End Function


>> Q3★dTime

Public Function dTime(ByVal Target As Range) As String
    dTime = Format$(Evaluate("=MID(" & Target.Address(False, True) & ",34,4)"), "00:00")
End Function


>> Q4★aTime

Public Function aTime(ByVal Target As Range) As String
    aTime = Format$(Evaluate("=MID(" & Target.Address(False, True) & ",39,4)"), "00:00")
End Function

 

PS:使用方法和 Excel 自带函数一样,输入完一个单元格后下拉即可!

更多追问追答
追问

谢谢大侠,但第一个sDate能否帮忙改下,如下图只能显示一行的日期

追答
Public Function sDate(ByVal Target As Range) As String
    Dim varResult As Variant
    
    varResult = Split(Target.Value, vbLf)
    
    Dim lngIndex As Long
    
    For lngIndex = LBound(varResult) To UBound(varResult)
        sDate = sDate & Format$(Evaluate("=DATEVALUE(MID(""" & varResult(lngIndex) & """,14,5))"), "yyyy-MM-dd") & vbLf
    Next
    
    sDate = Left$(sDate, Len(sDate) - 1)
End Function


注意:如果公式返回的结果不自动换行,请自行设置单元格→自动换行!!!


运行结果:

曼特沃克
2015-03-10 · 超过20用户采纳过TA的回答
知道答主
回答量:111
采纳率:0%
帮助的人:38.7万
展开全部
我先马克一下
更多追问追答
追问
啥叫“马克一下”?:)
追答
这么有局限性的表格,干嘛还自定义函数,多用几个自带函数嵌套一下也能做。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式