宏创建的代码运行良好,但看起来很笨拙。有人能帮我清理一下吗,这样我就可以学习如何让录制的宏更干净?
Sub SplitDateTime()
'
' SplitDateTime Macro
'
'
Columns("D:E").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("D:D").Select
Selection.NumberFormat = "m/d/yyyy"
Columns("E:E").Select
Selection.NumberFormat = "h:mm;@"
Range("D1:E1").Select
Selection.NumberFormat = "@"
Range("D1").Select
ActiveCell.FormulaR1C1 = "Date"
Range("E1").Select
ActiveCell.FormulaR1C1 = "Time"
Range("D2").Select
ActiveCell.FormulaR1C1 = "=INT(RC[-1])"
Range("E2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=RC[-2]-RC[-1]"
Range("D2:E2").Select
Selection.Copy
Range("D3:E212").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Columns("C:C").Select
Selection.EntireColumn.Hidden = True
Range("G2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = ""
Range("G3").Select
End Sub
答案1
清理后且稍微简短一些的版本:
Sub SplitDateTime()
'
' SplitDateTime Macro
'
'
Columns("D:E").Insert Shift:=xlToRight
Columns("D:D").NumberFormat = "m/d/yyyy"
Columns("E:E").NumberFormat = "h:mm;@"
Range("D1:E1").NumberFormat = "@"
Range("D1").FormulaR1C1 = "Date"
Range("E1").FormulaR1C1 = "Time"
Range("D2").FormulaR1C1 = "=INT(RC[-1])"
Range("E2").FormulaR1C1 = "=RC[-2]-RC[-1]"
' Range("D2:E2").Copy
' Range("D3:E212").PasteSpecial Paste:=xlPasteFormulas
' Application.CutCopyMode = False
Range("D2:E212").FillDown ' shorter version
Columns("D:E").AutoFit ' added
Columns("C:C").Hidden = True
Range("G2").Value = vbNullString
Range("G3").Select
End Sub
答案2
要使日期和时间的特定部分出现在单元格或公式中,您可以选择使用=TEXT(data,format)
...
与LibreOffice 中“格式化单元格”对话框 (CTRL+1) 中format
使用的完全相同。Custom
User Defined
请注意,格式说明符中可能存在“语言和地区”相关的差异;例如,要指定瑞典的年份,我们需要使用“ÅÅÅÅ”,而对于英语使用者则为“YYYY”。
(也;
用于,
函数调用中的参数分隔)
因此
=TEXT(A1,"YYYY-MM-DD")
将为 A1 中的内容提供一个漂亮的 ISO:样式日期。
=TEXT(A1,"HH:mm")
将根据同一日期显示时间。
这些将显示类似于:
2023-12-24
11:30
参考:
https://www.libreofficehelp.com/date-time-formats-libreoffice-calc/#Custom_Formatting_of_Date_Time