VBA将公式添加到包含特定文本的单元格

VBA将公式添加到包含特定文本的单元格,vba,excel,Vba,Excel,我正在尝试将查找公式添加到出现“是”一词的区域中的单元格中,并保持该区域中所有其他单元格中的文本不变。我的密码是 Sub AddFormula() Dim SrchRng As Range, cel As Range Set SrchRng = Range("B1:B20") For Each cel In SrchRng If InStr(1, cel.Value, "Yes") > 0 Then cel.Value = "=VLOOKUP(A1,H:I,2

我正在尝试将查找公式添加到出现“是”一词的区域中的单元格中,并保持该区域中所有其他单元格中的文本不变。我的密码是

Sub AddFormula()

Dim SrchRng As Range, cel As Range

Set SrchRng = Range("B1:B20")

For Each cel In SrchRng
    If InStr(1, cel.Value, "Yes") > 0 Then
        cel.Value = "=VLOOKUP(A1,H:I,2,0)"

    End If
Next cel

End Sub

不幸的是,单元格引用“A1”不会随着公式的输入而改变。有人能帮忙吗?

代码看起来不像应该更改“A1”中的值。循环位于B1:B20中的单元格上方,因此只有B1:B20中的单元格可以更改。也许你没有得到任何预期的改变,因为你的if条件从来都不是真的? 我建议使用“立即”窗口检查if条件是否为true,并使用“Debug.print”。最好使用R1C1引用,如下所示:

Sub AddFormula()

    Dim SrchRng As Range, cel As Range

    Set SrchRng = Range("B1:B20")

    For Each cel In SrchRng
        If InStr(1, cel.Value, "Yes") > 0 Then
            Debug.Print "Was true"
            cel.FormulaR1C1 = "=VLOOKUP(RC[-1],C[6]:C[7],2,0)"
        End If
    Next cel

End Sub

代码看起来不像应该更改“A1”中的值。循环在B1:B20中的单元格上,因此只有B1:B20中的单元格可以更改。可能您没有得到任何预期的更改,因为您的if条件从来都不是真的? 我建议使用即时窗口检查“Debug.print”的if条件是否为真。最好使用R1C1引用,如下所示:

Sub AddFormula()

    Dim SrchRng As Range, cel As Range

    Set SrchRng = Range("B1:B20")

    For Each cel In SrchRng
        If InStr(1, cel.Value, "Yes") > 0 Then
            Debug.Print "Was true"
            cel.FormulaR1C1 = "=VLOOKUP(RC[-1],C[6]:C[7],2,0)"
        End If
    Next cel

End Sub

下面是一个简单的解决方案,可以将单元格留给cel而不是始终A1:

Sub AddFormula()

Dim SrchRng As Range, cel As Range

Set SrchRng = Range("B1:B20")

For Each cel In SrchRng
    If InStr(1, cel.Value, "Yes") > 0 Then
        cel.Value = "=VLOOKUP(A" & cel.Row & ",H:I,2,0)"
    End If
Next cel

End Sub

下面是一个简单的解决方案,可以将单元格留给cel而不是始终A1:

Sub AddFormula()

Dim SrchRng As Range, cel As Range

Set SrchRng = Range("B1:B20")

For Each cel In SrchRng
    If InStr(1, cel.Value, "Yes") > 0 Then
        cel.Value = "=VLOOKUP(A" & cel.Row & ",H:I,2,0)"
    End If
Next cel

End Sub

工作完美,你能解释一下RC[-1]是如何工作的吗?我还在学这些东西。谢谢。效果很好,你能解释一下RC[-1]是如何工作的吗?我还在学这些东西。谢谢