2014-12-26 3 views
-1

나는 자바 스크립트를 제외하고는 과거에 코딩을 시도하지 않았지만, 나는 꽤 새로운 코드 다.MS Excel VBA 스크립트

나는 Sheet1의 값을 sheet2의 해당 열 B와 개별적으로 비교하여 일치하는 것을 찾기 위해 Excel 용 매크로를 만들려고합니다. 일치하는 항목이 없으면 전체 행이 스프레드 시트의 맨 아래에 추가됩니다. 시작할 위치에 대한 도움을 주시면 감사하겠습니다.

나는 중첩 된 루프를 이해하는 것입니다 당신이 시도하고있는 목록

+1

, 당신은 그것을 시도를 제공하거나 처음에 질문을 구글해야하고 있었다 여기에 질문을 게시하는 데 문제가 있습니다. 이것은 '게으른'질문이라고 할 수 있습니다. – ehsan88

+0

내가 한 코드는 그저 당황 스러울 뿐이었다. – dcoder123

+2

당혹스럽지 마라. 실수로 질문을 올리면 미래의 누군가가 그 질문을 배우게됩니다. 어느 쪽이든, 코드를 게시하면 도움을받을 가능성이 더 큽니다. – peege

답변

0

주요 6 열 수 있습니다.

  • 가 시트 (2)의 온도 값을 비교하여 각 행의 루프를 시작 행마다 임시 값을 설정
  • 시트 (1)를 통해 반복하여 시작한다. 일치
  • 복사 행 없었다 경우
  • 계속 열을 통해 반복하여, 시트 2의 루프의 끝에서 일치 여부를
  • 이 있다면
  • 추적하는 부울 변수를 사용하여 시트 통해 반복하는 1

코드 :

이 할 수있는 아주 쉬운 일입니다
Sub CopyNoMatch() 

Dim lastSourceRow As Long 
Dim source As String, target As String 
Dim tempVal As String 
Dim tRow As Long, lRow As Long, lCol As Long, nRow As Long 
Dim match As Boolean 

    source = "Sheet1" 
    target = "Sheet2" 

    lastSourceRow = Sheets(source).Range("A" & Rows.count).End(xlUp).row 

    For lRow = 2 To lastSourceRow  'Loop through Rows on Sheet1 
     match = False     'Reset boolean test for each new row 
     tempVal = Sheets(source).Cells(lRow, "B").Text  'Assign the tempValue to compare 

     For tRow = 2 To lastTargetRow 'Loop through entire target sheet 
      If Sheets(target).Cells(tRow, "B").Text = tempVal Then 
       match = True 
      End If 
     Next tRow 

     If match = False Then   'No Match found, copy row 
      nRow = Sheets(target).Range("A" & Rows.count).End(xlUp).row + 1 
      For lCol = 1 To 6  'Copy entire row by looping through 6 columns 
       Sheets(target).Cells(nRow, lCol).Value = Sheets(source).Cells(lRow, lCol).Value 
      Next lCol 
    Next lRow 

End Sub 
+0

응답 해 주셔서 감사합니다! 매우 감사. 첫 번째 시트 전체를 두 번째 시트로 복사하는 것 같습니다. 그러나 복사 부분은 훌륭하게 작동하여 지금 문제를 해결하려고합니다. – dcoder123

+0

아마도 TempVal의 할당 일 것입니다. 개정 된 코드를보고 시도해보십시오. LOCALS 창을 열고 변경된 값을보십시오. match가 true로 설정되어 있지 않습니다. – peege

+0

나는 한 시간 이상 그것에 대해 놀았는데, 어디가 잘못 됐는지 확신 할 수 없습니다. 테스트는 계속 실패하고 false로 유지되므로 전체 목록이 복사됩니다. 동일한 데이터 집합을 동일한 순서로 사용하고 1 행을 변경하면 다른 행만 인쇄됩니다. – dcoder123