excel - 日期和时间图
问题描述
我正在使用 Excel VBA 导入文本文件并分析数据。
我想要日期和时间格式的 x 轴。
原始文件包含以下时间字符串。
“20200324160900340”,即“YYYYMMddhhmmss.milliseconds”。
我有一个函数可以删除毫秒并将这个字符串转换为另一个格式为“2020/03/24 16:09:00”的字符串。
最后,我可以使用以下方法绘制带有 Y 值的数据:
Set sh = ActiveWorkbook.Worksheets(1)
Set CH1 = sh.ChartObjects(1).Chart
[...]
With CH1
With .SeriesCollection.NewSeries
.Values = Elapsed 'Double Values
.XValues = Time 'String Values format "YYYY-MM-dd hh:mm:ss"
.Name = File_name
End With
.HasTitle = True
With .Axes(xlCategory, xlPrimary)
.CategoryType = xlTimeScale
End With
End With
该图绘制正确,但我看不到时间值,如果我手动强制它们,我会看到类似“01-01-1900”的东西,这是无稽之谈。
解决方案
您不能在图表上绘制 STRINGS。将时间字符串转换为数字(日期/时间值),然后您将能够正确绘制它们。
下面是一个 VBA 函数,它将您的文本字符串转换为 Excel 日期/时间值...
Function TextToDateTime(s)
Dim yy, mm, dd, hh, mn, ss
yy = Mid(s, 1, 4)
mm = Mid(s, 5, 2)
dd = Mid(s, 7, 2)
hh = Mid(s, 9, 2)
mn = Mid(s, 11, 2)
ss = Mid(s, 13, 2)
TextToDateTime = DateSerial(yy, mm, dd) + TimeSerial(hh, mn, ss)
End Function
请注意,这些值看起来类似于: 43914.6729166667
.
这正是你想要的。如果您希望以更友好的方式查看日期时间值,请使用数字格式生成类似2020-03-24 16:09:00
.
推荐阅读
- arrays - 从用伪代码编写的数组中删除重复元素的算法
- node.js - console.log 为某些字段返回“对象”,而不是正文数据 [spotify-web-api-node]
- c - 如何在整数数组参数前添加空格?
- jenkins - 从共享库调用函数不起作用
- c - 如果 Spy++ 正在运行,为什么 Qt 应用程序只创建窗口句柄?
- javascript - node.js 中的 SOAP 请求
- javascript - 纯js下拉菜单中的搜索结果
- android - Android 应用漏洞 - HostnameVerifier,不在代码库中的任何位置
- delphi - 使用 Delphi 消息队列避免重复触发昂贵的操作
- ruby-on-rails - 将现有数据库中的数据播种到 Rails 中的新数据库