2013-03-28 5 views
0

문자열 배열이 있고 배열의 각 슬롯에 "B : J" "k : W" "AC : AG"Excel VBA에서 범위 검색

과 같은 문자열 형식의 열 범위가 있습니다.

에있어서, I는 "C"가 내부 "J B"있는지 검색해야 열 이름 예 "C"

인 문자열을 전달하고있다.

그래서 기본적으로는 "C"있는지 확인 할 필요가있는 "BCDEFGHIJ"이며 그것은 휴식 루프

에서입니다 그러나 만약 입력이 "A"는 그 다음에 가야하는 경우 배열의 슬롯.

이 기능은 단일 컬럼이 범위에 포함되는 배열에서의 위치를 ​​반환

+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 

그것은 예를 들어 직접 실행 창에서 다음과 같이 사용되는

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

당신은 인수가 범위로 ​​변환 할 수 있는지 확인하기 위해 검사를 몇 가지 오류를 추가 할 것입니다,하지만 난 것을 떠날거야 너에게. 콜론에 범위 문자열을 분할하고 문자의 ASCII 값을 비교하여 Range 개체없이이 작업을 수행 할 수 있습니다.

0

당신은

이 이
sheet.Application.ActiveCell.Column //for current selected column 
int col=sheet.Range("A").Column; // for any choosen column 

반환 현재 열 번호가, 당신의 범위 B에 대해 동일한을 적용

How to convert a column number (eg. 127) into an excel column (eg. AA) 살펴보고 있습니다 J를 확인하세요 J (10)> C (3)> B (2)

그러면 그 범위 안에 있다고 말할 수 있습니다.

링크가있는이 기능을 사용하려면 다른 방법이 필요합니다. C#을 위해 완료

ConvertToAlphaColumnReferenceFromInteger(sheet.Application.ActiveCell.Column) 

/. NET

당신이 시트 작동