Excel VBA-将日期字符串转换为日期 - 码农家园

文章推薦指數: 80 %
投票人數:10人

Excel VBA - Convert Date String to Date我在单元格中有许多字符串,它们是日期,但需要将其转换为日期格式。

它们的格式如下:[cc]mmm dd, ... ExcelVBA-ConvertDateStringtoDate 我在单元格中有许多字符串,它们是日期,但需要将其转换为日期格式。

它们的格式如下: 1mmmdd,yyyy 例如: 1Feb10,2016 因此它们的长度可以是11或12: 1Feb1,2016 我已经开始编写一个函数来分别解析字符串的每个部分(以天为整数,以月为整数,以年为整数),然后将其转换为日期格式。

首先,是否有比上述方法更简单/更轻松的方法? 如果没有更简单的方法,最好的方法是将3个字母的月份(例如2月或3月或4月)转换为月份的数字(例如2或3或4)?因为那是我真正坚持的唯一一点。

相关讨论 格式("2016年2月10日","ddmmyyyy") 现有数据实际上是日期,还是看起来像日期的字符串? 您可能希望查看以下帖子,以获取更详细的答案:stackoverflow.com/questions/37100821/ 在VBA中,您可以使用:cdate("Feb10,2016")。

作为功能,这将是: 12345PublicFunctionConvertToDate(rngAsRange)AsDate   ConvertToDate=CDate(rng) EndFunction 相关讨论 为什么不直接使用CDate(rng)? @arcadeprecinct,因为您不能从工作表中调用VBA函数-它们必须像这样包装在UDF中。

不知道您的意思是@arcadeprecinct,还是我错过了什么?作为UDF,我不确定您可以进一步缩短它。

@DarrenBartrup-Cook我没想到要从工作表中调用它,所以我认为不需要UDF 使用Date变量读取值,然后使用Format函数按照您认为合适的格式设置日期。

例如: 12345Subtest()   DimDAsDate   D=Range("A1").Value   MsgBoxFormat(D,"mm/dd/yyyy") EndSub 如果我在A1中使用字符串"Feb10,2016"运行代码,则消息框中将显示"02/10/2016" 您真的需要VBA吗?Excel为您提供了"文本到日期"功能=DATEVALUE(),它可以识别2016年2月10日。

相关讨论 你确定吗?我在离开答案之前尝试过它,并返回了#VALUE!错误。

可以肯定的是,该函数的帮助文件指出:使用MicrosoftExcelforWindows中的默认日期系统,date_text参数必须表示1900年1月1日至9999年12月31日之间的日期。

使用他们使用的格式(和日期),我得到了=DATEVALUE("January1,1900")错误 @DarrenBartrup-Cook这将取决于您的区域设置。

在英国,这种格式不会被认可。

喔好吧。

干杯罗里-那就是为什么它当时未被认可。

尝试这个: 123Subtest()   MsgBoxMonth(Datevalue("Feb10,2016")) EndSub 这将给出:2 Copyright© 码农家园联系:[email protected]



請為這篇文章評分?