代码下方。我试图用相应的数字替换所有月份的名称。例如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案例。
答案 0 :(得分:0)
我将其添加为答案,但这取决于您单元格中的当前值。
如果SrchRng
正在查看正确的单元格,并且这些单元格仅包含单词January
,February
或Jan
,Feb
,则可以使用{ {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
出错。