如何修改VBA代码按星号数量替换值:*=5、**=10、*****=50
修正后的星号替换VBA代码
问题说明
原代码逻辑完全错误:只判断单元格内容不等于5个星号就把值改成50,完全没处理单个星号、两个星号的情况,导致所有单元格都被错误设为50。
修正后的代码
Sub FillTitle() Dim lrow As Long Dim rng As Range ' 获取E列最后一行有数据的行号 lrow = Cells(Rows.Count, "E").End(xlUp).Row ' 遍历E2到最后一行的所有单元格 For Each rng In Range("E2:E" & lrow) Select Case rng.Value Case "*****" rng.Value = 50 Case "**" rng.Value = 10 Case "*" rng.Value = 5 ' 可选:如果需要处理非星号内容,取消下面注释并修改逻辑 ' Case Else ' rng.Value = "无效内容" End Select Next rng End Sub
代码解释
- 用
Select Case分支精准匹配不同星号数量的内容,先判断多星号(避免少星号被误匹配) - 严格对应需求:5个星→50,2个星→10,1个星→5
- 保留了
Case Else分支,可按需处理非星号格式的单元格内容,默认保留原内容
对应表格截图

内容的提问来源于stack exchange,提问作者vitaly olegovich
相关产品推荐
相关产品推荐

