Excel VBA-将日期字符串转换为日期 - 码农家园
文章推薦指數: 80 %
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]
延伸文章資訊
- 1[Excel VBA]輸入yyyymmdd直接轉換成日期格式,已有初步程式碼
有選定範圍(A:A),然後在該範圍內,輸入長度為8的字串Len(Target.Cells) = 8,就會觸發。 0. 引言; 留言.
- 2string - VBA-转换为日期 - IT工具网
原文 标签 string excel vba excel-vba date-conversion. 我又有一个问题: 我想从字符串转换为VBA中的日期 字符串如下:YYYY-DD-MM 日期应类...
- 3Excel VBA-将日期字符串转换为日期 - 码农家园
Excel VBA - Convert Date String to Date我在单元格中有许多字符串,它们是日期,但需要将其转换为日期格式。它们的格式如下:[cc]mmm dd, ...
- 4字串轉日期的問題- Excelㄧ般區
文字檔匯入,日期格式為mm/dd/yyyy ,但是excel一直把它當成字串,有檢查過沒有包含空白字元, 請問該如何以不使用vba的方式直接轉換成日期格式呢?
- 5Format 函式(Visual Basic for Applications) | Microsoft Docs
本文內容 · 語法 · 設定 · 註解 · 日期符號 · 時間符號 · 範例 · 不同數值的不同格式 · 不同字串值的不同格式 ...