Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2907|回复: 10

[已解决]取时间相关的字符串中的字符

[复制链接]
发表于 2013-7-12 12:55 | 显示全部楼层 |阅读模式
有一个字符串,它的格式可能为5-1、0501、5月1日其中一种,我现在要取月份“5”,请问应该怎么写代码?一开始在函数版问了一下,结果貌似VBA中无法使用TEXT函数。先谢过各位高手了。这就不用附件了吧?
最佳答案
2013-7-12 17:23
如果确定月份一定在前边,那么就用val+left就成了
s = "5月1日"
m = Val(Left(s, 2))
Stop
s = "0501"
m = Val(Left(s, 2))
Stop
s = "5-01"
m = Val(Left(s, 2))
发表于 2013-7-12 12:59 | 显示全部楼层
回复

使用道具 举报

发表于 2013-7-12 14:32 | 显示全部楼层

Sub dd()
Dim arr, a, b, c
a = "5-1"
b = "0501"
c = "5月1日"
MsgBox IIf(Val(c) < 12, Val(c), Val(Left(c, Len(b) - 2)))
End Sub
回复

使用道具 举报

发表于 2013-7-12 14:43 | 显示全部楼层
Sub dd()
Dim str$
str = "0501"
MsgBox Month(CDate(str))
str = "5-1"
MsgBox Month(CDate(str))
str = "5月1日"
MsgBox Month(CDate(str))
End Sub
回复

使用道具 举报

 楼主| 发表于 2013-7-12 14:52 | 显示全部楼层
liuguansky 发表于 2013-7-12 14:43
Sub dd()
Dim str$
str = "0501"

这个跑出来很对,谢谢。可以帮忙改一下:如果字符串不是日期型的,返回0或者空串吗?拜托您了。
回复

使用道具 举报

发表于 2013-7-12 16:52 | 显示全部楼层
本帖最后由 爱疯 于 2013-7-12 16:54 编辑

Sub test()
    Dim str$
   
    str = "0501"
    MsgBox IIf(IsDate(str), Month(CDate(str)), 0)
   
    str = "5-1"
    MsgBox IIf(IsDate(str), Month(CDate(str)), 0)
   
    str = "5月1日"
    MsgBox IIf(IsDate(str), Month(CDate(str)), 0)
   
End Sub


Month(CDate("0501")),不可以转换成正确的日期,等于5只是巧合。
CDate("0501")后,转为数字501(=365+31+29+31+30+15),即1901-5-15。再month()时,恰好是5。
后两种,正确。
回复

使用道具 举报

 楼主| 发表于 2013-7-12 17:04 | 显示全部楼层
爱疯 发表于 2013-7-12 16:52
Sub test()
    Dim str$
   

版主求助{:30:}

点评

6楼不是回了么  发表于 2013-7-12 17:17
回复

使用道具 举报

发表于 2013-7-12 17:23 | 显示全部楼层    本楼为最佳答案   
如果确定月份一定在前边,那么就用val+left就成了
s = "5月1日"
m = Val(Left(s, 2))
Stop
s = "0501"
m = Val(Left(s, 2))
Stop
s = "5-01"
m = Val(Left(s, 2))
回复

使用道具 举报

发表于 2013-7-12 17:24 | 显示全部楼层
形如"501"就不行哈,这样得再加东西
回复

使用道具 举报

 楼主| 发表于 2013-7-12 20:44 | 显示全部楼层
爱疯 发表于 2013-7-12 16:52
Sub test()
    Dim str$
   

哦,我是想问你“0501”怎么办来着。现在不用了,貌似8楼的方法可行了。谢谢。

点评

如8#所说,如果能确定不会出现错误日期,就用8楼方法吧  发表于 2013-7-12 22:40
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-15 00:44 , Processed in 0.338865 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表