Удалить часть текста в ячейке и оставить другой текст - PullRequest
4 голосов
/ 18 марта 2020

`4/19/2020 6:00:00 PM - это то, что внутри клетки. Я хотел бы удалить часть «6:00:00 PM», но единственная функция, которую я могу найти, - это функция .REPLACE, которая просто стирает всю ячейку и делает ее пустой. Для каждой ячейки существует разная дата, поэтому я не могу просто каждый раз заменять ее одной и той же датой.

With Columns("E:E")
.Replace What:="?*:00:00 PM=", Replacement:="?*:00:00 PM "
.Replace What:="?*:00:00 PM", Replacement:=""
End With
With Columns("H:H")
.Replace What:="?*:00:00 PM=", Replacement:="?*:00:00 PM "
.Replace What:="?*:00:00 PM", Replacement:=""
End With

Ответы [ 2 ]

7 голосов
/ 18 марта 2020

Если значения в столбце E являются подлинными датой / временем, выполните:

Sub dropTime()
    With Range("E:E").Cells
        .NumberFormat = "m/d/yyyy "
    End With
End Sub

Если значения в столбце E равны Текст значений, затем выполните:

Sub dropTime2()
    Dim rng As Range, r As Range, arr
    Set rng = Intersect(Range("E:E"), ActiveSheet.UsedRange)
    For Each r In rng
        arr = Split(r.Text, " ")
        If UBound(arr) = 2 Then
            r.Value = arr(0)
            r.NumberFormat = "m/d/yyyy "
        End If
    Next r
End Sub
2 голосов
/ 18 марта 2020

Используйте функцию format().

Этот ответ найдет последнюю строку в столбце 4 («D») и l oop от строки 1 до lRow (последняя строка), отформатировав каждую ячейку, как определено.

Sub test()
    Dim rng As Range, cell As Range
    Dim lRow As Long
    Dim wb As Workbook: Set wb = ThisWorkbook
    Dim ws As Worksheet: Set ws = wb.Worksheets("Data")

    lRow = ws.Cells(ws.Rows.Count, 4).End(xlUp).Row
    Set rng = Range(Cells(1, 4), Cells(lRow, 4))

    For Each cell In rng
        cell = Format(cell, "dd/mm/yyyy")
    Next cell
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...