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]是如何工作的吗?我还在学这些东西。谢谢