在Excel中搜索范围VBA
问题描述:
我有一个字符串数组,在数组的每个插槽中是一个字符串格式的“列的范围”,例如“B:J”“k:W”“AC:AG”在Excel中搜索范围VBA
的方法被传递一个字符串,它是列名,例如“C”
我需要搜索看看是否“C”是内部“B:J”。
所以基本上它需要检查,看看是否“C”是“BCDEFGHIJ”这是,如果它是突破从环
但如果我输入“A”应该然后去下一个插槽中的数组。
谢谢
答
该函数将返回其中该单个列被包括在范围内的阵列中的位置。它使用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值来执行此操作。
答
你可以看看
How to convert a column number (eg. 127) into an excel column (eg. AA)
sheet.Application.ActiveCell.Column //for current selected column
int col=sheet.Range("A").Column; // for any choosen column
返回当前的列数,只是采用同样为您范围B:J-,检查如果j(10)> C(3)> B(2)
然后你可以说它在这个范围内。
如果需要通过我提供的链接绕过此功能的其他方法。
ConvertToAlphaColumnReferenceFromInteger(sheet.Application.ActiveCell.Column)
完成对C#/。NET
你将与片操作'Range'对象数组或者你只是给了我们比如你的数据与列?你有没有尝试过任何可以与我们分享的代码? – 2013-03-28 10:59:38