2013-04-19 5 views
0

포럼에서 비슷한 (거의 같은 질문) 것을 보았습니다. 다음은 선택된 대답입니다.두 시트의 일치하는 열 값에 따라 한 시트에서 다른 시트로 셀 데이터 복사

코드 :

Sub fixThis() 
    Dim i As Long, j As Long, col1 As Long, col2 As Long, lastrow1 As Long, lastrow2 As Long 
    Dim sheetOne As String 
    Dim sheetTwo As String 

    col1 = 5 
    col2 = 1 
    sheetOne = "Names" 
    sheetTwo = "Job" 
    lastrow1 = Sheets(sheetOne).Cells(Sheets(sheetOne).Rows.Count, col1).End(xlUp).Row 
    lastrow2 = Sheets(sheetTwo).Cells(Sheets(sheetTwo).Rows.Count, col2).End(xlUp).Row 

    For i = 2 To lastrow1 
     For j = 2 To lastrow2 
      If Sheets(sheetOne).Cells(i, col1).Value = Sheets(sheetTwo).Cells(j, col2).Value Then 
       Sheets(sheetOne).Cells(i, 6).Value = Sheets(sheetTwo).Cells(j, 2).Value 
      End If 
     Next j 
    Next i 
End Sub 

하지만 내 경우에 대한 대답으로 바꿀 방법을 잘 모릅니다.

나는 2 장에 이름을 추가하고 제거합니다. 두 시트의 첫 번째 열을 비교하고 싶습니다. 두 시트에서 값이 일치하면 "add"시트의 status 열 값을 "remove"시트에 복사하여 일치 값을 복사하려고합니다.

도와주세요.

Ps : 코딩 초보자입니다.

답변

0
Sub fixThis() 
    Dim i As Long, j As Long, colStatus As Long, lastrowAdd As Long, lastrowRemove As Long 

    colStatus = 2 'your status column number 
    lastrowAdd = Sheets("Add").Cells(Sheets("Add").Rows.Count, 1).End(xlUp).Row 
    lastrowRemove = Sheets("Remove").Cells(Sheets("Remove").Rows.Count, 1).End(xlUp).Row 

    For i = 1 To lastrowAdd 
     For j = 1 To lastrowRemove 
      If Sheets("Add").Cells(i, 1).Value = Sheets("Remove").Cells(j, 1).Value Then 
       Sheets("Remove").Cells(j, colStatus).Value = Sheets("Add").Cells(i, colStatus).Value 
      End If 
     Next j 
    Next i 
End Sub 
+0

감사 Shibormot 및 santhosh. 시보 몰 (Shibormot), 귀하의 스크립트는 내가 요구하는 바를 정확히 수행 한 것 같습니다. 그러나 나는 그것을 실행하는 동안 내가 실수를하는지 잘 모르겠다. 그것은 잠시 동안 실행되지만 아무것도 복사하지 않습니다! 보기 매크로를 클릭하고 작성한 다음 코드를 붙여 넣은 다음 실행했습니다. 그것은 잘 실행되지만 왜 아무것도 복사하지 않는지 확실하지 않습니다. 누락 된 항목이 있습니까? 제게 알려주십시오 – XeroSnow

+0

@XeroSnow, 내 코드에서 실수를 발견했습니다 (할당에서'i'와'j'를 섞어서) 정답 인 경우,이 변형을 시도하십시오. – shibormot

+0

완벽한 :) 감사합니다 shibormot. 그게 정확히 내가 뭘 찾고 있었는지. – XeroSnow

0

VBA가 필요 없습니다. 이는 Vlookup을 사용하여 수행 할 수 있습니다. 아래 이미지를 참조하십시오.

enter image description here

관련 문제