我正在比较用逗号分隔的列表,以查看是否有任何值与单个值匹配。我相信此行代码会出现问题:
If INDEXLIST(damageListCell, ",", n) = CStr(Range(damageTypeCell).Value) Then
INDEXLIST
是一个函数,该函数返回一个字符串,该字符串是一个以逗号分隔的列表开头的结尾的字符串。此列表位于damageListCell
的位置,该位置引用了一个Excel中的框。
damageTypeCell
是作为字符串传递给此函数的参数,例如,是Excel中“ D5”中的一个框的想法。
我不认为CStr(Range(damageTypeCell).Value)
返回的是数据和相关单元格的字符串,因此该表达式不起作用。
我已经尝试了所有可以想到的方式来通过卖出交易,其中包括:
CStr(Range(damageTypeCell).Value)
Range(damageTypeCell)
Range(damageTypeCell).Value
For i = 1 To list_langth
n = n + 1
If INDEXLIST(damageListCell, ",", n) = CStr(Range(damageTypeCell).Value) Then
Damage_Fill = 1
Exit For
Else
Damage_Fill = 0
End If
Next i
End Function
Function INDEXLIST(strList As String, strSeparator As String, lngIndex As
Long) As String
'Syntax
'=INDEXLIST(List,Separator,Index)
Dim ListArray() As String
ListArray() = Split(strList, strSeparator)
INDEXLIST = ListArray(lngIndex - 1)
End Function
Public Function CountChrInString(Expression As String, Character As String) As Long
'
' ? CountChrInString("a/b/c", "/")
' 2
' ? CountChrInString("a/b/c", "\")
' 0
' ? CountChrInString("//////", "/")
' 6
' ? CountChrInString(" a / b / c ", "/")
' 2
' ? CountChrInString("a/b/c", " / ")
' 0
'
Dim iResult As Long
Dim sParts() As String
sParts = Split(Expression, Character)
iResult = UBound(sParts, 1)
If (iResult = -1) Then
iResult = 0
End If
CountChrInString = iResult
End Function
Excel返回#VALUE!但是,当运行此函数时,它应该返回1或0。
答案 0 :(得分:0)
在功能INDEXLIST
中,更改
ListArray() = Split(strList, strSeparator)
到
ListArray() = Split(Range(strList), strSeparator)
答案 1 :(得分:0)
lngIndex As Long
在功能INDEXLIST中更改为lngIndex As Integer
。
If INDEXLIST(damageListCell, ",", n) = CStr(Range(damageTypeCell).Value) Then
更改为If INDEXLIST(damageListCell, ",", i) = INDEXLIST(damageTypeCell, ",", 1) Then
,并完全删除了n个变量