我有一张表上有一张表,下面的函数将用于搜索另一张表并返回代理商名称显示的次数;
我遇到的问题是,如果我尝试复制并粘贴该值,它将从一个数字变为'#Value!'。此外,当切换工作表然后切换回调用UDF的工作表时,它会将所有值更改为“#Value!”
这是函数及其调用方式。任何帮助将不胜感激。
Public Function GetMatrixCount(AgentName As String) As Integer
Dim matrixSheet As Worksheet, mContainer() As String, c As Integer, m As Integer, y As Integer
Dim fullRange As Range, l As Range, lastRow As Integer
Dim firstThree As String, curAgent As String
'toDo
'return zero if the matrix updates worksheet doesn't exist or the input string is empty
On Error Resume Next
Set matrixSheet = Sheets("Matrix Updates")
On Error GoTo 0
If matrixSheet Is Nothing Or Not Trim(AgentName) <> "" Then
GetMatrixCount = 0
Exit Function
End If
'get month number user wants to input from the title at the top of the page - used to do value check on matrix updates data
mContainer() = Split(Range("B1").Value, " ")
m = month(DateValue(mContainer(UBound(mContainer) - 1) & " 1"))
y = mContainer(UBound(mContainer))
firstThree = Left(AgentName, 3)
lastRow = matrixSheet.Cells(Rows.Count, 1).End(xlUp).Row
c = 0
Set fullRange = matrixSheet.Range("B2:B" & lastRow)
For Each l In fullRange.Cells
curAgent = l.Offset(0, 1).Value
If month(l.Value) = m And year(l.Value) = y And Left(curAgent, 3) = firstThree And Mid(curAgent, InStrRev(curAgent, " ") + 1) = Mid(AgentName, InStrRev(AgentName, " ") + 1) Then
c = c + 1
End If
If l.Value = "" Then
Exit For
End If
Next
GetMatrixCount = c
End Function
使用方法: = GetMatrixCount(B4)
B4:John Doe
答案 0 :(得分:0)
<强> UPD:强> 试着写下面的内容:
Set wb = ThisWorkbook
Set matrixSheet = wb.Sheets("Matrix Updates")
切换工作簿时应该解决问题。