2016-06-02 2 views
-1

모든 원시 데이터가 포함 된 하나의 마스터 통합 문서가 있습니다. 이 열 B는 비어 있거나 "예"라는 텍스트를 포함합니다.VBA 통합 문서의 행을 조건부로 복사하는 방법

B 열에 "예"가 포함 된 마스터 통합 문서의 모든 행을 포함해야하는 다른 통합 문서가 있습니다.

때마다 매크로 실행, 내가 어떻게이 사용 VBA를 얻을 수 있습니다 내 두 번째 필터링 된 통합 문서를 비우고

1 행에서 마스터 통합 문서를 확인해야?

편집 1 :이 내가

Sub filter() 

Dim LastRow As Integer, i As Integer, erow As Integer 

LastRow = ActiveSheet.Range(“A” & Rows.Count).End(xlUp).Row 

For i = 2 To LastRow 

If Cells(i, 1) = Date And Cells(i, 2) = “Yes” Then 
Range(Cells(i, 1), Cells(i, 7)).Select 
Selection.Copy 

Workbooks.Open Filename:="C:\Users\212557423\Desktop\2.xls" 
Worksheets(“Sheet1”).Select 
erow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 

ActiveSheet.Cells(erow, 1).Select 
ActiveSheet.Paste 
ActiveWorkbook.Save 
ActiveWorkbook.Close 
Application.CutCopyMode = False 
End If 

Next i 
End Sub 

Edit2가 작업 된 코드입니다 :

Sub filter() 
Dim strsearch As String, lastline As Integer, tocopy As Integer 

lastline = Range("A65536").End(xlUp).Row 
j = 1 

For i = 1 To lastline 
    For Each c In Range("B" & i) 
     If InStr(c.Text, "ja") Then 
      Rows(i).Copy Destination:=Sheets(2).Rows(j) 
     j = j + 1 
     End If 
    Next c 
Next i 

End Sub 

내 문제는 지금이다 : 좀 더 연구 한 후 나는 다음 코드했다 이 매크로는 한 시트에서 다른 시트로 만 복사합니다. 내가 필요한 것은 "노예"통합 문서에서 "마스터"통합 문서에서 행을 가져 오는 것입니다.

아무도 도와 줄 수 있습니까? 감사!

+2

무엇을 시도 했습니까? 몇 가지 코드를 게시하고 어떤/당신을 위해 일하지 않은 .... 우리는 당신을 돕기 위해 기꺼이지만, 코드를 작성하지 않습니다. –

+1

먼저 시도해보고, 가지고있는 것을 게시하고 우리는 당신이 그것을 고칠 수 있습니다. 간단한 단계로 계획을 개발하여 시작하십시오. 1 : masterWb 및 otherWb를 엽니 다. 2 : otherWb의 B 열에있는 모든 셀을 반복하고 masterWb 등의 해당 셀을 확인하십시오. – CodeJockey

+0

내 코드로 첫 번째 게시물을 편집했습니다. 감사! –

답변

0

편집 : 당신이 원시 데이터 워크 시트에서 현재 필터링 된 값을 추가하기 전에, 필터링 된 통합 문서 항상 비워 요청으로 경고를 추가 할

다음은이

Option Explicit 

Sub main() 
    Dim rawDataSht As Worksheet, filtDataSht As Worksheet 

    Set rawDataSht = ActiveSheet 
    Workbooks.Open Filename:="C:\Users\212557423\Desktop\2.xls" 
    Set filtDataSht = ActiveWorkbook.Worksheets("Sheet1") 

    With rawDataSht 
     With .Range("A1:G" & .Cells(.Rows.Count, "A").End(xlUp).Row) 
      .AutoFilter field:=2, Criteria1:="YES" 
      If Application.WorksheetFunction.Subtotal(103, .Cells.Resize(, 1)) > 1 Then 
       filtDataSht.Cells.Clear 
       .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeConstants).Copy 
       filtDataSht.Cells(1, 1).PasteSpecial xlPasteAll 
       Application.CutCopyMode = False 
      Else 
       MsgBox "No data with ""YES"" in column B of sheet " & .Parent.name & " of workbook " & .Parent.Parent.name 
      End If 
      .AutoFilter 
     End With 
    End With 
    ActiveWorkbook.Close (True)  
End Sub 
+0

감사! 내 솔루션보다 좋아 보인다. 그래도 오류 1004가 발생하고 이유를 인식 할 수 없습니다 ... –

+0

오류가 발생하는 행은 무엇입니까? – user3598756

+0

매크로를 시작할 때'.AutoFilter field : = 2, Criteria1 : = "YES"' –

0

는 시도 당신의 임무를 완수하는 약간 다른 방법.

With ActiveSheet 
     .AutoFilterMode = False 
     With Range("B1", Range("B" & Rows.Count).End(xlUp)) 
      .AutoFilter Field:=1, Criteria1:=Array("YES"), Operator:=xlFilterValues 
      On Error Resume Next 
      .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Copy 
     End With 
    Workbooks("C:\Users\212557423\Desktop\2.xls").Sheets("Sheet1").Cells(1, 1).PasteSpecial xlPasteValues 
     .AutoFilterMode = False 
    Application.CutCopyMode = False 
    End With 
관련 문제