Function zdy(K1 As String, i As Integer)
Dim temp
temp = Split(K1, ",")
zdy = temp(i)
End Function
使用:=zdy(K2,1)就可以得到日期
请问哪里错误了。
同时询问下,当A列有几格数据,那么B列就用“2012-00-00 ”写入。
很感谢您的答案, 如果单元格数据只有一组逗号的话, 函数可以实现。我现在在做一个方便工作的软件,正在尝试各种方法。现在前台已经做好,就是后面这些个问题困扰我了。
追答如果是第一个问题,我测试的结果不是只有一组逗号(看下图),同样可以实现。
我觉得关键是要看你的逗号状态是中文还是英文!
因此,在你的函数代码基础上略微做了修改,使得中文逗号、英文逗号都可以得到正确结果。
Function zdy(K1 As String, i As Integer)
Dim temp
K1 = Replace(K1, ",", ",")
temp = Split(K1, ",")
zdy = temp(i)
End Function
可以成功提取了。但是后面还是会有其他类型的数据。
我(K2,1的数据是:,2012-09-03 08:14:10已派单:CMCC-GD-GZCL-20120903-01646,2012-09-03 08:12:15,林某某
用你给我修改后的代码输入后。 在单元格 ==zdy(k2,1) 后。单元格内容:2012-09-03 08:14:10已派单:CMCC-GD-GZCL-20120903-01646 。
我只想提取里面的那个时间,第一组“逗号”里面的第一个时间。
求大神帮助!!
哎,你早点说呀~~ 绕了半天才明白你的大概意图(仍不清楚你要提取的是日期还是时间)。。
下面代码供参考,i参数指定查找第几个中文逗号,j参数指定提取什么
Function zdy(K1 As String, i As Integer, Optional j As Integer)
' 参数j为可选参数
Dim temp
temp = Split(K1, ",")
If j = 0 Then
' 如果参数j为0或者未指定
' 只提取日期
zdy = Left(temp(i), 10)
ElseIf j = 1 Then
' 只提取时间
zdy = Mid(temp(i), 12, 8)
ElseIf j = 2 Then
' 提取日期和时间
zdy = Left(temp(i), 19)
End If
End Function
2012-09-03 08:12:15 我需要的是这个。大神,这个是算 日期+时间? 不好意思,没说明白。可否加邮箱或者QQ请教?
追答如果用我最后给出的代码,可使用下面的公式:=zdy(K2,2,2)
邮箱我的资料里面有。。QQ从来不用的。。。不过,最近忙,可能回复你邮件慢些。。。
先感谢你的回答,如果这两个宏合在一起怎么弄。其实我是想,把那个提取到的逗号里的数据,同时能放在F列相对的行的单元格。目标表是:源文件数据
就是说,K2 提取的数据放到F2. 那个逗号里面的数据,格式:2012-09-03 17:59:07。 是时间格式的。 能否加你好友跟您学习一下。
那你发个表到我邮箱吧,写几个数据并举个例子出来, lkshome@sohu.com,加上我的HI百度就可以了,我经常在
本回答被提问者采纳可以成功提取了。但是后面还是会有其他类型的数据。
我(K2,1的数据是:,2012-09-03 08:14:10已派单:CMCC-GD-GZCL-20120903-01646,2012-09-03 08:12:15,林某某
用你给我修改后的代码输入后。 在单元格 ==zdy(k2,1) 后。单元格内容:2012-09-03 08:14:10已派单:CMCC-GD-GZCL-20120903-01646 。
我只想提取里面的那个时间,第一组“逗号”里面的时间。
求大神帮助!!
真服了,你是豆号分开的,当然提出来的是整个了。如果你时间是固定的。那更简单了。
Function zdy(K1 As Range, i As Integer)
Dim temp
temp = Split(K1.Value, ",")
zdy = Left(temp(i), 11)'这里加个left函数,取左11位就是时间了。11可以自己改下。
End Function
看看是不是这样的。