VBA:查找范围内的月份单词并将其替换为数字

时间:2018-08-24 14:57:40

标签: vba excel-vba loops date format

代码下方。我试图用相应的数字替换所有月份的名称。例如1月为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 :(得分:0)

我将其添加为答案,但这取决于您单元格中的当前值。

如果SrchRng正在查看正确的单元格,并且这些单元格仅包含单词JanuaryFebruaryJanFeb,则可以使用{ {3}}将该文本强制为真实日期。

从您最近的评论中可以看到,例如,文本为2018年7月14日:

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

在循环中使用此代码将值转换为显示为两位数月份数字的实际日期。
单元格将包含值43295,以Excel表示,即7月14日(自1900年1月1日以来的天数)。

整个代码为:

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出错。