2013-08-14 2 views
0

그래서 몇 가지 답변 된 VBA 질문을 살펴 보았습니다. 세 장의 "By_Oppt_ID", "Top_Bottom"및 "Non_Top_Bottom"이 있습니다. 처음 두 개는 각각 고유 한 이름을 가진 대량의 컬럼을가집니다. 이제 By_Oppt_ID에 "Top_Bottom"에없는 일부 열이 있습니다. 따라서 By_Oppt_ID의 각 열 이름을 "Top_Bottom"의 모든 열 이름과 비교하고 열 이름을 찾을 수없는 경우 해당 열 이름과 그 아래의 모든 행을 세 번째 워크 시트 "Non_Top_Bottom"에 복사합니다. 그래서 저는 여기에있는 내용은 다음과 같습니다VBA. 두 개의 개별 워크 시트에있는 열 이름 값을 비교하여 일치하지 않는 열을 세 번째 워크 시트에 복사하십시오.

Sub Copy_Rows_If() 

    Dim Range_1 As Worksheet, Range_2 As Worksheet 
    Dim c As Range 



    Set Range_1 = Workbooks("Complete_Last_Six_Months_Q_Results.xlsx").Sheets("Top_Bottom") 
    Set Range_2 = Workbooks("Complete_Last_Six_Months_Q_Results.xlsx").Sheets("By_Oppt_ID") 

    Application.ScreenUpdating = False ' Stays on the same screen even if referencing different worksheets 

    For Each c In Range_2.Range("A2:LX2") 
      ' Checks for values not in Range_1 
     If Application.WorksheetFunction.CountIf(Range_1.Range("A1:CR1"), c.Value) = 0 Then 
      ' If not, copies rows to new worksheet 
      ' LR = .Cells(Row.Count, c).End(xUp).Row 
       c = ActiveCell 
       Sheets("By_Oppt_ID").Range("Activecell", "ActiveCell.End(xlDown)").Copy Destination:=Workbooks("Complete_Last_Six_Months_Q_Results.xlsx").Sheets("Non_Top_Bottom").Range("A1:A6745") 
      Set rgPaste = rgPaste.Offset(0, 1) 'Moves to the next col, but starts at the same row position 

     End If 
    Next c 

End Sub 

나는이 여러 가지를 컴파일 오류가 일련의 계속 표시 : 첨자 범위 출력/방법 "Global_Range"실패. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

에 다음 줄 코드는 무엇을 하는가를 변경할 수 있습니다? 실패한 부분은 어디입니까? 무슨 일 이니? –

답변

0

같은 통합 문서마다 내에서이 코드를하려는 경우,

ThisWorkbook.Sheets("Top_Bottom") 

대신

Workbooks("Complete_Last_Six_Months_Q_Results.xlsx").Sheets("Top_Bottom") 

당신의 코드를 통해 그것을 복제하고 그래도 문제가 해결되는지 확인의를 사용해보십시오.

0

c = Activecell의 의미는 무엇입니까? c.activate을 말하고 싶습니까?

당신은 또한 Sheets("By_Oppt_ID").Range(Activecell, ActiveCell.End(xlDown)).Copy Workbooks("Complete_Last_Six_Months_Q_Results.xlsx").Sheets("Non_Top_Bottom").Range("A1")

관련 문제