在excel中将表数组作为范围读取是否有限制?
这里是vba宏的新手,我正在尝试使用我在下面的链接中找到的vba代码,但是当我有一个很大的范围时,它不起作用 我有一个vba函数,可以在C16000:C16954范围内工作,但不能在C116000:C116954范围内工作,尽管它们读取的行数相同在excel中将表数组作为范围读取是否有限制?,excel,vba,Excel,Vba,这里是vba宏的新手,我正在尝试使用我在下面的链接中找到的vba代码,但是当我有一个很大的范围时,它不起作用 我有一个vba函数,可以在C16000:C16954范围内工作,但不能在C116000:C116954范围内工作,尽管它们读取的行数相同 FuzzyvLookup(B2,D16000:D16954,1) = "SOME VALUE" FuzzyvLookup(B2,D116000:D116954,1) = #N/A when i expect it to be
FuzzyvLookup(B2,D16000:D16954,1) = "SOME VALUE"
FuzzyvLookup(B2,D116000:D116954,1) = #N/A when i expect it to be
FuzzyvLookup(B2,D116000:D116954,1) = "SOME VALUE"
有什么建议说明原因吗
添加了指向我所指的宏代码的链接:(太长了,所以我没有粘贴到这里!)
您可以这样做:
Function FuzzyvLookup(myRange As range, strLookup As String, lookupType)
' lookup type
' 1 first
' 2 mid
' 3 last
' 0 all
Dim a() As Long
myRow = 2
myCol = 2
ReDim a(myRow - 1, myCol - 1) As Long
a(0, 0) = 9
a(1, 0) = 6
a(0, 1) = 9
a(1, 1) = 6
Dim myVal
myVal = ""
For b = 1 To myRange.Rows.Count
If lookupType = 1 And myRange.Item(b, 1) Like strLookup & "*?" Then
myVal = myRange.Item(b, 2)
Exit For
End If
If lookupType = 2 And myRange.Item(b, 1) Like "?*" & strLookup & "*?" Then
myVal = myRange.Item(b, 2)
Exit For
End If
If lookupType = 3 And myRange.Item(b, 1) Like "?*" & strLookup Then
myVal = myRange.Item(b, 2)
Exit For
End If
If lookupType = 0 And myRange.Item(b, 1) Like "*" & strLookup & "*" Then
myVal = myRange.Item(b, 2)
Exit For
End If
Next b
FuzzyvLookup= myVal
End Function
在您的单元格中,可以测试此宏:
Macro1(D16000:D16954, B2, 1)
备注:1表示首先(从字符串的字符1开始)您有什么excel版本?你到底是如何调用这个函数的?您对函数return做了什么?您会遇到什么错误?首先,将
Integer
的所有实例更改为Long
。使用Integer
在这里是不好的做法。^换句话说,原始开发人员没有通过:-)。有关Integer
的限制,请参阅-32768到32767
。Excel的行数超过了Integer
所能处理的行数。在Integer
上执行查找/替换,更改为Long
@BigBen我刚刚在更改为Long后再次测试了该函数,它工作了!非常感谢。