返回#VALUE! for循环,用于比较逗号分隔列表中的值?

时间:2019-06-27 02:13:27

标签: excel vba

我正在比较用逗号分隔的列表,以查看是否有任何值与单个值匹配。我相信此行代码会出现问题:

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。

2 个答案:

答案 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个变量