VBA: Найти месячные слова в диапазоне и заменить его числом - PullRequest
0 голосов
/ 24 августа 2018

ниже кода. Я пытаюсь заменить названия всех месяцев на соответствующие номера. Например январь с 01.

Проблема в том, что у меня есть строка, в то время как я хотел бы иметь формат даты.

Sub AccDec()

Dim SrchRng As Range, cel As Range

NumRows = Range("B13", Range("B13").End(xlDown)).Rows.Count

Set SrchRng = Range(Cells(1, 13), Cells(NumRows, 15))
For Each cel In SrchRng
    If InStr(1, cel.Value, "January") > 0 Then
        cel.Offset(1, 0).Value = "/01/"
    End If
Next cel

End Sub

Есть предложения?

Это результат макроса. Я хотел бы реализовать случай if.

1 Ответ

0 голосов
/ 24 августа 2018

Я добавлю это как ответ, но это зависит от текущих значений в ваших ячейках.

Если SrchRng смотрит на правильные ячейки и эти ячейки содержат только слово January, February или Jan, Feb, тогда вы можете использовать DateValue дляприведите этот текст в реальную дату.

Исходя из вашего последнего комментария, текст, например, 14 июля 2018 года:

cel = DateValue(cel)
cel.NumberFormat = "mm"

Используйте этот код в цикле для преобразования значений в реальные даты, отображаемые в виде двух цифрномер месяца.
В ячейке будет содержаться значение 43295, которое в формате Excel указано 14 июля (количество дней с 1 января 1900 года).

Весь код будет выглядеть следующим образом:

Sub AccDec()

    Dim SrchRng As Range, cel As Range
    Dim NumRows As Long

    NumRows = Range("B13", Range("B13").End(xlDown)).Rows.Count

    Set SrchRng = Range(Cells(1, 13), Cells(NumRows, 15))

    MsgBox "Searching this range:  " & SrchRng.Address, vbOKOnly

    For Each cel In SrchRng
            cel = DateValue(cel)
            cel.NumberFormat = "mm"
    Next cel

End Sub

Я добавил окно сообщения, так как не думаю, что оно смотрит на правильный диапазон.Кроме того, если какая-либо ячейка не имеет значения, которое может превратиться в дату, она выдаст ошибку с Type Mismatch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...