Vba 返回用户定义范围内的行号,而不是绝对行号
我有范围Vba 返回用户定义范围内的行号,而不是绝对行号,vba,excel,Vba,Excel,我有范围rngData和数组acoprows()[int] 以下循环用于填充阵列: For Each c In rngData If c.Value = "Search term 1" Then aCopyrow(1) = c.Row ElseIf c.Value = "Search term 2" Then aCopyrow(2) = c.Row ElseIf c.Value = "Search term 3" Then
rngData
和数组acoprows()[int]
以下循环用于填充阵列:
For Each c In rngData
If c.Value = "Search term 1" Then
aCopyrow(1) = c.Row
ElseIf c.Value = "Search term 2" Then
aCopyrow(2) = c.Row
ElseIf c.Value = "Search term 3" Then
aCopyrow(3) = c.Row
End If
Next c
我希望数组存储与rngData
对应的行号,或者换句话说:如果在rngData
的第一行中找到匹配项,则整数1存储在aCopyrow
中。但是,使用此方法存储该特定单元格的全局行号
感谢您的帮助
rngData.c.Row
只是给了我一个错误(方法不受支持)。怎么样:
aCopyrow(1) = c.Row - rngData.Cells(1,1).Row + 1
如果有3个以上的Ifs,您可以这样迭代以使代码更加紧凑:
Dim i as Long
For Each c In rngData
For i = 1 To 3
If c.Value = "Search term " & i Then
aCopyrow(i) = c.Row - rngData.Cells(1,1).Row + 1
End If
Next i
Next c
使用一组数据,速度会快得多:
Dim vArray As Variant
vArray = rngData.Value
For lRow = 1 To UBound(vArray, 1)
For lCol = 1 To UBound(vArray, 2)
If vArray(lRow, lCol) = "Search term 1" Then
aCopyrow(1) = lRow
ElseIf vArray(lRow, lCol) = "Search term 2" Then
aCopyrow(2) = lRow
ElseIf vArray(lRow, lCol) = "Search term 3" Then
aCopyrow(3) = lRow
End If
Next lCol
Next lRow
是否有可能
rngData
可以有多个搜索项1
或搜索项2
或搜索项3
?否,搜索项是公司名称,只能出现一次。最后一个问题。这些值位于单个行/列中。i、 e是rngData
类似于I13:M13
或B1:B100
?请注意,如果得到合适的答案,您应该将问题标记为已解决。谢谢。谢谢你的提示,但是只有三个搜索词。你的解决方案正是我现在正在做的,尽管我觉得有点笨拙。但也许这是唯一的办法,所以谢谢:)