2013-03-28 8 views
0

У меня есть строковый массив, и в каждом слоте массива есть «диапазон столбцов» в строчном формате, например «B: J» «k: W» «AC: AG»Поиск диапазона в Excel VBA

метод передается строка, которая является именем столбца, например, «с»

мне нужно искать увидеть, если «с» внутри «B: J».

Так в основном это нужно проверить, если «C» в «BCDEFGHIJ», который он, и если это перерыв из цикла

Но если вход «А» он должен затем перейти к следующему слот в массиве.

Спасибо

+0

вы работать с листом 'Range' объект массивы или вы просто дали нам пример, сравнивая ваши данные в столбцах? вы что-нибудь пробовали, любой код, который вы могли бы поделиться с нами? –

ответ

0

Эта функция возвращает позицию в массиве, где один столбец входит в диапазон. Он использует свойство 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 

Он используется, как это, из Immediate Window, например

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

Вы хотели бы добавить некоторую проверку ошибок, чтобы убедиться, что аргументы могут быть преобразованы в диапазонах, но я оставлю это тебе. Вы можете сделать это без объектов Range, разделив строку диапазона на двоеточие и сравнив значения ASCII букв.

0

Вы можете взглянуть на

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

Смежные вопросы