如何修复hh:mm格式

时间:2019-03-29 09:58:31

标签: excel vba datetime

我有一个从特定信息系统导入的Excel文件。我一直在通过VBA代码进行自动化。但是我在处理hh:mm单元格时遇到了问题。我无法总结它们,我尝试将它们格式化为hh:mm,我还尝试将输出单元格格式化为[HH]:MM,但似乎都无法正常工作。

我想问题在于单元格的格式如何,它们在Times New Roman中,似乎有些偏离。 我需要一个vba代码来选择特定范围,然后复制ancien值并再次粘贴,但使用的是默认的Excel缺省格式。

enter image description here

1 个答案:

答案 0 :(得分:3)

您将必须自定义要汇总到[h]:mm的单元格的格式

如果源单元格中的时间不正确或格式设置为“文本”,则此方法可能无效。您可以将单元格手动设置为General,然后按 F2 ,然后按 Enter 键以检查其是否有效。

在自动执行此操作之前,您需要了解我们在做什么。

  1. 更改格式
  2. 更改单元格的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