2016-08-10 1 views
3

나는 다음 VBA 코드를 사용하는 경우 : 이름 "알렉산드라"에서이엑셀 VBA - 자동 필터 (2 열/2 기준)을 기준으로 일치하지 않는 사본 행

With Range("A6:T" & lngLastRow) 
    .AutoFilter 
    .AutoFilter Field:=6, Criteria1:="Alexandra" 
    .AutoFilter Field:=19, Criteria1:="-14" 
    .Copy AlexSheet.Range("A3") 
    .AutoFilter 
End With 

그것을 복사 행 autofilter 필드 6뿐만 아니라 다른 이름과 다른 값을 가진 1 또는 2 행을 자동 필터 필드 19에서 복사합니다. (-14가 아님)

Excel/VBA가 내가 한 번도 묻지 않은 행을 복사하는 원인을 모르겠습니다. 에 대한.

누군가가 나를 도울 수 있기를 바랍니다.

FULL CODE :

Sub DeleteFilterAndCopy() 

Application.ScreenUpdating = False 
Application.EnableEvents = False 
Application.Calculation = xlCalculationManual 

Sheets("Alex").Range("A3:T1000").clearcontents 
Sheets("Anett Edith").Range("A3:T1000").clearcontents 
Sheets("Angela").Range("A3:T1000").clearcontents 
Sheets("Dirk").Range("A3:T1000").clearcontents 
Sheets("Daniel").Range("A3:T1000").clearcontents 
Sheets("Klaus").Range("A3:T1000").clearcontents 
Sheets("Konrad").Range("A3:T1000").clearcontents 
Sheets("Marion").Range("A3:T1000").clearcontents 
Sheets("MartinX").Range("A3:T1000").clearcontents 
Sheets("Michael").Range("A3:T1000").clearcontents 
Sheets("Mirko").Range("A3:T1000").clearcontents 
Sheets("Nils").Range("A3:T1000").clearcontents 
Sheets("Ulrike").Range("A3:T1000").clearcontents 

Dim lngLastRow As Long 
Dim AlexSheet As Worksheet, AnettEdithSheet As Worksheet, AngelaShett As Worksheet, DanielSheet As Worksheet 
Dim DirkSheet As Worksheet, KlausSheet As Worksheet, Konradsheet As Worksheet 
Dim MarionSheet As Worksheet, MartinSheet As Worksheet, MichaelSheet As Worksheet, MirkoSheet As Worksheet 
Dim NilsSheet As Worksheet, Ulrikesheet As Worksheet 

Set AlexSheet = Sheets("Alex") 
Set AnettEdithSheet = Sheets("Anett Edith") 
Set AngelaSheet = Sheets("Angela") 
Set DanielSheet = Sheets("Daniel") 
Set DirkSheet = Sheets("Dirk") 
Set KlausSheet = Sheets("Klaus") 
Set Konradsheet = Sheets("Konrad") 
Set MarionSheet = Sheets("Marion") 
Set MartinSheet = Sheets("MartinX") 
Set MichaelSheet = Sheets("Michael") 
Set MirkoSheet = Sheets("Mirko") 
Set NilsSheet = Sheets("Nils") 
Set Ulrikesheet = Sheets("Ulrike") 

lngLastRow = Cells(Rows.Count, "A").End(xlUp).Row 

With Range("A6:T" & lngLastRow) 
    .AutoFilter 
    .AutoFilter Field:=6, Criteria1:="Alexandra" 
    .AutoFilter Field:=19, Criteria1:="-14" 
    .Copy AlexSheet.Range("A3") 
    .AutoFilter Field:=6, Criteria1:="Anett/Edith" 
    .Copy AnettEdithSheet.Range("A3") 
    .AutoFilter Field:=6, Criteria1:="Angela" 
    .Copy AngelaSheet.Range("A3") 
    .AutoFilter Field:=6, Criteria1:="Daniel" 
    .Copy DanielSheet.Range("A3") 
    .AutoFilter Field:=6, Criteria1:="Dirk" 
    .Copy DirkSheet.Range("A3") 
    .AutoFilter Field:=6, Criteria1:="Klaus" 
    .Copy KlausSheet.Range("A3") 
    .AutoFilter Field:=6, Criteria1:="Konrad" 
    .Copy Konradsheet.Range("A3") 
    .AutoFilter Field:=6, Criteria1:="Marion" 
    .Copy MarionSheet.Range("A3") 
    .AutoFilter Field:=6, Criteria1:="Martin" 
    .Copy MartinSheet.Range("A3") 
    .AutoFilter Field:=6, Criteria1:="Michael" 
    .Copy MichaelSheet.Range("A3") 
    .AutoFilter Field:=6, Criteria1:="Mirko" 
    .Copy MirkoSheet.Range("A3") 
    .AutoFilter Field:=6, Criteria1:="Nils" 
    .Copy NilsSheet.Range("A3") 
    .AutoFilter Field:=6, Criteria1:="Ulrike" 
    .Copy Ulrikesheet.Range("A3") 
    .AutoFilter 
End With 

Application.ScreenUpdating = True 
Application.EnableEvents = True 
Application.Calculation = xlCalculationAutomatic 

End Sub 

DATA 스크린 샷 : filteres를 얻을 수

데이터 및 복사 (오렌지 열 = 자동 필터 필드) : enter image description here

문제는 , 매크로는 Planner Alexandra와 값 -14가 포함 된 행을 복사하지 않으며, 또한 cop 두 셀에 서로 다른 값을 갖는 1-2 개의 행.

인사말

+0

을 시도 할 경우 A5를 통해 셀 A1에서 당신이 값? 이것은 자동 필터링 –

+0

이 옳다는 것을 혼란스럽게 할 수 있습니다. 그것이 이유였습니다. 답변을 표시 할 수 있도록 게시물을 작성하십시오 – Bluesector

+0

고마워요. –

답변

4

가 궁금이

With Range("A6:T" & lngLastRow) 
    .AutoFilter Field:=6, Criteria1:="Alexandra" 
    .AutoFilter Field:=19, Criteria1:="-14" 
    .SpecialCells(xlCellTypeVisible).Copy AlexSheet.Range("A3") 
End With 
2
 It's ? like how are you coping autofiltered data.. 
    Copy only special rows 

    Range("A1").Select''Destination where want to paste 
    'Use below code to paste 
    Selection.PasteSpecial Paste:=xlPasteValue 
+0

기능이 훨씬 길어서 15 인 15 장에 대해 동일한 작업을 수행하므로 선택이 작동하지 않습니다 – Bluesector

+0

기존 기능을 게시합니다.이 점은 내가 무엇을 이해하는 데 도움이되는지 –

+0

완료되었습니다. 게시물을 살펴보십시오. – Bluesector

2
'For each new FilterCombinations criteria call this sub or modify according to your need 
Sub Macro() 
Range("A1").Select ''Assuming that 1st row is for header 
ActiveCell.Offset(1, 0).Select 

Dim intSpRowCount As Integer 
intSpRowCount = Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Rows.count 

If Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Rows.count > 1 Then 
'copy only visible range 
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(intSpRowCount - 1, Int(ActiveSheet.UsedRange.Rows.count) - 1)).Select 
Selection.Copy 

Sheets("Sheet3").Select 
Range("A6").Select 
ActiveSheet.Paste 
End If 
End Sub