2017-12-06 1 views
0

나는 이것이 작동하도록 전체 코드를 다시 작성하기 위해 상상할 수있는 모든 스레드를 읽는 데 최선을 다했습니다.Excel VBA - 데이터를 복사하지 않는 VLookup

상황 : 데이터가 시트 2 (점수)이고 데이터가 시트 3 (의견)입니다. 각 시트에는 열 A에 티켓 번호가 있습니다. 점수 시트는 가능한 모든 티켓 번호를 포함합니다. 코멘트 시트에는 그 합계의 부분 집합 만 포함됩니다 (약 50 %). 점수 시트에는 4 개의 채워진 열이 포함되어 있으며 의견 시트에는 2가 있습니다. 기존의 일반적인 행 (티켓 번호)과 일치하는 조회가 필요하며 주석 열 B (2)의 값을 가져 와서 열 E (5)에 붙여 넣습니다. 는 CSAT 요약 시트 인 sheet1의 시트이며 점수 시트의 Col AD ​​내용을 포함합니다.

아래는 현재 코드입니다. 나는 VLOOKUP을 제거하고 단지 (예 : "A"와 같은) 변수를 넣어 경우, 그것은 확실히 내가 놓친 거지하지 무엇을

scores.UsedRange.Columns.Copy 
csatSum.Range("A1").Insert 
csatSum.Activate 
Set rng = csatSum.Range("A2:A" & lastRow) 
rngLastRow = Comments.Range("B2:B" & lastRow) 
For i = 2 To lastRow 
    On Error Resume Next 
    csatSum.Cells(i, 5) = WorksheetFunction.VLookup(rng, Comments.Range(rngLastRow), 2, False) 
    On Error GoTo 0 
Next i 

... 모든 한 줄에 불구하고, 올바른 열 페이스트 A를 않습니다. 분명히 VLookup 자체에있는 것이 분명합니다. 그러나 나는 손실에 처해있다.

+0

VLOOKUP의 첫 번째 인수는 단일 값이어야한다. 아마'csatSum.Cells (i, 1)'입니다. –

+0

나는 그것이'rngLastRow = Comments.Range ("B1 : B"& lastRow)'이어야한다고 생각한다. VLookup의 두 번째 매개 변수는 찾아보기 테이블이어야합니다. –

+1

'rngLastRow = Comments.Range ("B2 : B"& lastRow)'는 배열을 반환 할 것이므로'Comments.Range (rngLastRow)'는 작동하지 않습니다. 범위로 설정 한 다음 호출해야합니다. –

답변

3

나는 그것을해야한다고 생각 :

scores.UsedRange.Columns.Copy 
csatSum.Range("A1").Insert 
'csatSum.Activate 
'Set rng = csatSum.Range("A2:A" & lastRow) 
Set rngLastRow = Comments.Range("A2:B" & lastRow) 
For i = 2 To lastRow 
    On Error Resume Next 
    csatSum.Cells(i, 5) = WorksheetFunction.VLookup(csatSum.Cells(i, 1), rngLastRow, 2, False) 
    On Error GoTo 0 
Next i 
+2

'rngLastRow' 여기에 2 차원 배열입니다 (lastRow = 1이 아니면) - 당신은 그것을 'Range()'에 넘길 수 없습니다. 할당에'Set'을 추가하면 범위가됩니다. (그래서 Range에 래핑 할 필요가 없습니다.)) –

+0

알았어. 지금 세트를 추가했습니다. –

+0

그리고 코치, Tim과 Scott에 감사드립니다! –