excel - 我的 excel 文件是德国(德语)格式,想更改为英语(英国)格式
问题描述
我已经尝试了多个代码,例如这样
Sub DateFixer()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
For Each r In Selection
v = r.Text
r.Clear
r.NumberFormat = "dd/mm/yyyy hh:mm:ss"
r.Value = DateSerial(Mid(v, 7, 4), Mid(v, 4, 2), Left(v, 2)) + TimeSerial(Mid(v, 12, 2), Mid(v, 15, 2), Right(v, 2))
Next r
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub
和这个
Application.ActiveWorkbook.Worksheets("data").Range("A1:A3").NumberFormat = "dd/mm/yyyy hh:mm:ss am/pm
"
和这个
Sub changeformat()
Dim lastrow As Long
lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
'MsgBox lastrow
For i = 2 To lastrow
Cells(i, 2).NumberFormat = ("dd/mm/yyyy hh:mm:ss am/pm")
Next i
End Sub
但它仍然没有将我的 DateTime 更改为 9/12/20 09:28:00 am。我可以知道我做错了什么吗?
解决方案
您可以将每个部分拆分并强制它们成为日期。然后总结再改格式:
Sub changeformat()
Dim lastrow As Long
Dim i As Long
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lastrow
Cells(i, 1).Value = CDate(Replace(Split(Cells(i, 1), " ")(0), ".", "/")) + CDate(Split(Cells(i, 1), " ")(1))
Cells(i, 1).NumberFormat = ("dd/mm/yyyy hh:mm:ss am/pm")
Next i
End Sub
执行代码后,我得到:
请注意,该值9.12.20 09:27:60
无法转换,因为09:27:60
它不是有效时间。秒总是从 00 到 59,而不是从 1 到 60。所以实际上09:27:60
应该是09:28:00
恐怕您需要为这种情况编写异常代码。
推荐阅读
- c# - VS 在 15.9.13 中找不到命名空间(但在 15.9.11 中可以找到)
- java - 除了使用 Lambda 表达式的不同实现之外,函数式接口的用例是什么?
- scala - na.replace 是否有任何替代方法,其中要替换的字符串的数据类型和替换可以不同?
- java - 使用 QueryDSL 对 Oracle 数据库进行高效分页
- jenkins - 詹金斯订书机请求失败,没有有效的面包屑
- css - CSS动画播放不流畅
- javascript - 使用完整日历模块在 Moodle 中使用 requirejs 找到彼此时遇到问题
- spring - 无法解析 OpenID 配置 spring boot (security) java.net.ConnectException: Connection denied: connect
- html - 如何使用 HTML、CSS 或/和 Bootstrap 获取 Gmail 中的邮箱列表?
- r - 用于汇总统计信息的动态仪表板和 R 中 DF 的选定/所有变量下拉列表