我有一个从特定信息系统导入的Excel文件。我一直在通过VBA代码进行自动化。但是我在处理hh:mm单元格时遇到了问题。我无法总结它们,我尝试将它们格式化为hh:mm,我还尝试将输出单元格格式化为[HH]:MM,但似乎都无法正常工作。
我想问题在于单元格的格式如何,它们在Times New Roman中,似乎有些偏离。 我需要一个vba代码来选择特定范围,然后复制ancien值并再次粘贴,但使用的是默认的Excel缺省格式。
答案 0 :(得分:3)
您将必须自定义要汇总到[h]:mm
的单元格的格式
如果源单元格中的时间不正确或格式设置为“文本”,则此方法可能无效。您可以将单元格手动设置为General
,然后按 F2 ,然后按 Enter 键以检查其是否有效。
在自动执行此操作之前,您需要了解我们在做什么。
Formula
而不是Value
。在这种情况下,两者是相同的。我如何自动执行此过程,我无法手动处理数千个单元格。– – 2分钟前Yassine Lachgar
尝试一下
Option Explicit
Sub Sample()
Dim ws As Worksheet
Dim lastRow As Long, lastCol As Long
Dim rng As Range, aCell As Range
'~~> Set this to the relevant worksheet
Set ws = Sheet1
With ws
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
'~~> Find Last row and last column
lastRow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
lastCol = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
'~~> Identify your range
Set rng = .Range(.Cells(1, 1), .Cells(lastRow, lastCol))
'~~> Set the format. Be careful with this
'~~> This will overwrite existing formats
rng.NumberFormat = "General"
'~~> Perform F2 + Enter via code
For Each aCell In rng
aCell.Formula = aCell.Value
Next aCell
End If
End With
End Sub