我正在尝试编写一个宏
1)将变量searchstring
中A列中每个单元格的值存储
I Think 的代码片段是
lr = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lr
searchstring = ws.Cells(i, 1).Value
2)获取变量searchstring
并确定它是否存在于名为rsca的工作表的A列中。
4)如果确实更新了列N,则为是
5)如果没有用
这是我的完整语法,但每当我单步执行我的代码时,它会点击For行并立即跳转到End Function
我的工作表中有数据,A列大约有40行(但这个可能会上下波动,所以我不想硬编码结束单元格)
如何改变这种语法,以便它能在上面实现我想要的结果?
Public Function CheckIfCurrent()
Dim ws As Worksheet, searchstring As String, i As Long
Set ws = Sheets("ers")
lr = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lr
searchstring = ws.Cells(i, 1).Value
With .Range("N2:N" & .Cells(.Rows.Count, "A").End(xlUp).Row)
.Formula = IIf(IsError(Application.Match(searchstring, Sheets("rsca").Columns(1), 0)), "No", "Yes")
.Value = .Value
End With
Next i
End Function
答案 0 :(得分:2)
这是我对要求的理解:
将公式应用于工作表N
的{{1}}列,验证工作表ers
列中A
列的同一行中的值是否存在A
{1}}。
如果找到值,公式将返回rsca
,否则返回Yes
。
由于目标是使用excel公式返回所需的结果,因此无需循环任何相关范围。
此解决方案适用于No
以下公式:
Target Range
其中:
=IF( ISERROR( MATCH( RC1, #rSrc, 0 ) ), ""No"", ""Yes"" )
位于Target Range
的工作表ers
中(N2:Nr
是包含r
列数据的最后一行)
A
代表位于#rSrc
的工作表Source Range
中的rsca
的地址(A2:Ar
是包含r
列数据的最后一行1}})
以下代码:
A
更新excel公式。试试这段代码:
source range address
答案 1 :(得分:-1)
这个怎么样?
Public Sub CheckIfCurrent()
Dim searchstring As String
Dim i As Long
With ThisWorkbook.Worksheets("ers")
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To lr
searchstring = .Cells(i, 1).Value
With .Range("N2:N" & lr)
.Formula = IIf(IsError(Application.Match(searchstring, Sheets("rsca").Columns(1), 0)), "No", "Yes")
.Value = .Value
End With
Next i
End With
End Sub