在Excel中,我编写了一个简短的脚本,它应该删除每个单元格的第一个字符,其中包含一个“*”符号。到目前为止我所拥有的是
Sub Macro5()
Dim Rng As Range
Dim i As Long
i = 1
While i <= 20000
Set Rng = Range("A" & i)
If InStr(Rng, "*") > 0 Then
Rng.Offset(0, 1).Formula = "=Right(Rng,LEN(Rng)-1)"
i = i + 1
Else: i = i + 1
End If
Wend
End Sub
调用脚本的行似乎有效,但是放入B列的公式是“= Right(Rng,LEN(Rng)-1)”,它给出了'NAME?'错误。如何定义LEN公式以将Rng用作范围,而不是电子表格中的“单词”?
答案 0 :(得分:1)
在这种情况下,使用R1C1 type formulae
可以让生活更轻松。
Sub RemoveFirstStar()
Dim rng As Range, c As Range
Set rng = Range("A1:A2000")
For Each c In rng.Cells
If Left(c, 1) = "*" Then
c.Offset(0, 1).FormulaR1C1 = "=mid(rc[-1],2,1000)"
End If
Next c
End Sub
对于您的特定代码示例,请更改IF
:
Rng.Offset(0, 1).FormulaR1C1 = "=Right(RC[-1],LEN(RC[-1])-1)"