2014-09-18 4 views
1

인덱스 D와 G의 연결된 문자열 인 데이터를 가져 오는 INDEX 및 MATCH 함수를 사용하고 있습니다 (미안하지만 첨부 할 점이 없습니다.). 열 D에는 INDEX (열 A와 열 B)가 있고 열 A와 B에는 12 번째 행까지의 값이 있습니다. MATCH는 워크 시트에서 6이라는 위치를 정교하게 전달합니다. 그러나 내가 아래에 표시된 것처럼 VBA 코드에서 이것을 사용할 때 INDEX는 MsgBox를 통해 볼 수있는 VBA 코드에서 작동하지만 'check'변수에 값을 할당하는 MATCH 함수가 작동하지 않습니다. 나는 정말 오랫동안 머리를 부러 뜨 렸습니다. 여기 전문가의 도움이 필요합니다. 누가 내가 잘못 가고 있는지 말해줘?Excel VBA 일치 함수가 작동하지 않습니다.

Sub testindex() 

Dim check As Long 

Set sh = Sheets("Sheet1") 

For j = 1 To 11 

'Index value is correctly shown 
MsgBox "Index Value=" & Application.WorksheetFunction.Index(sh.Range("A2:B12"), j, 1) & Application.WorksheetFunction.Index(sh.Range("A2:B12"), j, 2) 

'Cells(7, 4)=ISA737775 same as G2&H2 
MsgBox "Cells(7,4)=" & Cells(7, 4) 
check = Application.WorksheetFunction.Match(Cells(7, 4), Application.WorksheetFunction.Index(sh.Range("A2:B12"), j, 1) & Application.WorksheetFunction.Index(sh.Range("A2:B12"), j, 2), 0) 

Next j 

End Sub 

감사

답변

0

대전 번째 paramater이 범위의 형태가 될 것으로 예상하고있다. VBA를 통해 일치 항목을 호출하면 해당 범위는 실제로 "A1 : A12"와 같은 일부 문자열이 아니라 범위 개체 여야합니다. 또는 연결된 인덱스 수식 출력이 무엇이든간에 범위 개체 여야합니다.

어쨌든 이미 반복하고 있으므로 인덱스를 통해 값을 가져 오는 대신 해당 값을 직접 호출하지 않는 이유는 무엇입니까? 똑같은 일을 작성하지만, 그것을 할 VBA에서 과세 INDEX 함수를 사용하지 않고있다

check = Application.WorksheetFunction.Match(Cells(7, 4), sh.Range("A" & 2 + j).value & sh.Range("B" & 2 + j), 0)

. match의 두 번째 매개 변수는 여전히 A 열과 B 열의 연결된 값인 문자열이기 때문에 여전히 작동하지 않습니다. 범위 개체에 붙여 넣으면 범위로 변환 할 수 있습니다.

check = Application.WorksheetFunction.Match(Cells(7, 4), sh.Range(sh.Range("A" & 2 + j).value & sh.Range("B" & 2 + j)), 0)

A와 B의 값은 연결될 때 범위를 만드는 실제 셀 이름이라고 가정합니다. 마치 j=1처럼 보이면 Check = Match (셀 (7,4), sh.Range ("G2 : H50"), 0) 또는 뭔가 ...

관련 문제