Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在Excel VBA中搜索范围_String_Excel_Vba_Search_Range - Fatal编程技术网

String 在Excel VBA中搜索范围

String 在Excel VBA中搜索范围,string,excel,vba,search,range,String,Excel,Vba,Search,Range,我有一个字符串数组,数组的每个插槽中都有一个字符串格式的“列范围”,例如“B:J”“k:W”“AC:AG” 正在向该方法传递一个字符串,该字符串是一个列名,例如“C” 我需要搜索看看“C”是否在“B:J”内 所以基本上它需要检查“C”是否在“BCDEFGHIJ”中,它是什么,它是否从一个循环中断 但是如果我输入“A”,它应该进入阵列中的下一个插槽 Thank此函数将返回数组中单个列包含在范围中的位置。它使用Intersect特性确定两个范围是否相交 Function ArrayPos(sColL

我有一个字符串数组,数组的每个插槽中都有一个字符串格式的“列范围”,例如“B:J”“k:W”“AC:AG”

正在向该方法传递一个字符串,该字符串是一个列名,例如“C”

我需要搜索看看“C”是否在“B:J”内

所以基本上它需要检查“C”是否在“BCDEFGHIJ”中,它是什么,它是否从一个循环中断

但是如果我输入“A”,它应该进入阵列中的下一个插槽


Thank

此函数将返回数组中单个列包含在范围中的位置。它使用Intersect特性确定两个范围是否相交

Function ArrayPos(sColLetter As String, vaRanges As Variant) As Long

    Dim i As Long
    Dim sh As Worksheet
    Dim lReturn As Long

    Set sh = Sheet1

    For i = LBound(vaRanges) To UBound(vaRanges)
        If Not Intersect(sh.Columns(sColLetter), sh.Columns(vaRanges(i))) Is Nothing Then
            lReturn = i
            Exit For
        End If
    Next i

    ArrayPos = lReturn

End Function
它是这样使用的,例如从即时窗口

?arraypos("M",array("B:J","K:W"))
 1 

您可能希望添加一些错误检查,以确保参数可以转换为范围,但我将留给您。您可以在没有范围对象的情况下,通过在冒号上拆分范围字符串并比较字母的ASCII值来执行此操作。

您可以查看

返回当前列号,只需对范围B:J应用相同的列号,检查J(10)>C(3)>B(2)

那么你可以说它在这个范围之内

在需要的情况下,用我给你的链接,以其他方式围绕这个函数

ConvertToAlphaColumnReferenceFromInteger(sheet.Application.ActiveCell.Column)

为C#/.NET完成

您是使用sheet
Range
对象数组操作,还是只给我们举了一个将数据与列进行比较的示例?你有没有尝试过任何东西,任何你可以与我们分享的代码??
ConvertToAlphaColumnReferenceFromInteger(sheet.Application.ActiveCell.Column)