我有一個字符串數組,在數組的每個插槽中是一個字符串格式的「列的範圍」,例如「B:J」「k:W」「AC:AG」在Excel中搜索範圍VBA
的方法被傳遞一個字符串,它是列名,例如「C」
我需要搜索看看是否「C」是內部「B:J」。
所以基本上它需要檢查,看看是否「C」是「BCDEFGHIJ」這是,如果它是突破從環
但如果我輸入「A」應該然後去下一個插槽中的數組。
謝謝
我有一個字符串數組,在數組的每個插槽中是一個字符串格式的「列的範圍」,例如「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