Как исправить формат чч: мм - PullRequest
1 голос
/ 29 марта 2019

У меня есть файл Excel, импортированный из определенной информационной системы.Я работал с его автоматизацией через код VBA.Однако я столкнулся с проблемой при работе с чч: мм.Я не могу суммировать их, я попытался отформатировать их в чч: мм, я также попытался отформатировать свою выходную ячейку как [ЧЧ]: ММ, кажется, ничего из этого не работает.

Я думаю, проблема вс тем, как ячейки отформатированы, они в Times New Roman и, кажется, немного не так.Мне нужен код VBA, чтобы выбрать определенный диапазон, скопировать значение ancien и вставить их снова, но с обычным форматированием Excel по умолчанию.

enter image description here

1 Ответ

3 голосов
/ 29 марта 2019

Вам нужно будет отформатировать ячейку, в которой вы суммируете, до [h]:mm

Это может не работать, если время в исходных ячейках неверное или отформатировано как текст. Вы можете вручную отформатировать ячейки как General, а затем нажать F2 , а затем Enter , чтобы проверить, работает ли он.

Прежде чем автоматизировать это, вам необходимо понять, что мы делаем.

  1. Изменение формата
  2. Изменение Formula ячейки, а не Value. В этом случае, однако, оба одинаковы.

как я могу автоматизировать этот процесс, я не могу сделать это вручную для тысяч ячеек .. - Яссин Лахгар 2 минуты назад

Попробуйте это

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...