使用VBA或公式在文本数字字符串中查找值

时间:2017-05-15 22:32:50

标签: excel string vba excel-vba

我需要在数字的文本字符串中找到一个值“。”将表示值之间的范围,“,”是两个值之间的中断。

示例:我需要确定116是否在文本字符串

[000.117,119.131,137,140.999]

是的,116会在列表中,而136则不会。

我必须测试超过一千行,每行(地区,部门和帐户)有三个不同的值。我只需要从公式或VBA代码开始帮助测试值是否在文本字符串中。我唯一的选择是将50多个文本字符串强制插入数字列表,但文本字符串列表可能会逐月更改,并且需要几个小时才能将50多个文本字符串转换为数字列表。谢谢。

1 个答案:

答案 0 :(得分:3)

不确定您的数据是如何布局的,但这应该可以帮助您入门。

这是一个带有两个参数的函数,一个是要搜索的字符串,另一个是你要查找的字符。

Function checkRange(str As String, findStr As Long) As String
Dim strArray() As String
strArray() = Split(str, ",")

Dim i       As Long
Dim rng()   As String
Dim bottom As Long, top As Long
For i = LBound(strArray) To UBound(strArray)
    Debug.Print strArray(i)
    If InStr(1, strArray(i), ".") > 0 Then
        ' there is a decimal
        rng = Split(strArray(i), ".")
        bottom = rng(0)
        top = rng(1)
        If bottom <= findStr And top >= findStr Then
            'MsgBox (findStr & " is in the range " & strArray(i))
            checkRange = findStr & " is in the range " & strArray(i)
            Exit For
        Else
            checkRange = findStr & " is NOT in any range"
        End If
    End If
    If strArray(i) = findStr Then
        checkRange = findStr & " is in the range " & strArray(i)
        Exit For
    End If
Next i

End Function

你可以这样称呼:

checkRange "000.117,119.131,137,140.999", "116"

或在Excel单元格中:

enter image description here