Sub copy()
Application.ScreenUpdating = False
[e1] = "count"
[e2:e15] = "=COUNTIF($C$2:$C$15,C2)=1"
[e2:e15].Value = [e2:e15].Value
Sheet1.Range("$A$1").CurrentRegion.AutoFilter Field:=5, Criteria1:="FALSE"
Sheet1.AutoFilter.Range.copy
Sheet2.Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
Sheet2.[e1:e15] = ""
Sheet1.AutoFilterMode = False
Sheet1.[e1:e15] = ""
Application.ScreenUpdating = True
End Sub
Sub copy1()
Dim r As Integer, c As Integer, str As String, varF As Variant
Application.ScreenUpdating = False
Sheet2.Range("A1").CurrentRegion.Cells.Clear
With Sheet1
If .AutoFilterMode = True Then .AutoFilterMode = False
With .[$A$1].CurrentRegion
r = .Rows.Count: c = .Columns.Count
.Offset(, c).Resize(1, 1) = "count"
End With
.Range(.Cells(2, c + 1), .Cells(r, c + 1)) = "=AND(COUNTIF($C$2:$C$15,C2)=1,COUNTIF($B$2:$B$15,B2)=1)"
.Range(.Cells(2, c + 1), .Cells(r, c + 1)).Value = .Range(.Cells(2, c + 1), .Cells(r, c + 1)).Value
.Range("$A$1").CurrentRegion.AutoFilter Field:=c + 1, Criteria1:="FALSE"
.AutoFilter.Range.Resize(, c).copy
Sheet2.Range("A1").PasteSpecial xlPasteValues
.AutoFilterMode = False
Application.CutCopyMode = False
.Range(.Cells(1, c + 1), .Cells(r, c + 1)) = ""
str = "=TRANSPOSE(IF(((COUNTIF($C$2:$C$" & r & ",$C$2:$C$" & r & ")=1)*COUNTIF($B$2:$B$" & _
r & ",$B$2:$B$" & r & ")=1),FALSE,ADDRESS(ROW($B$2:$B$" & r & "),2)))"
varF = Join(Filter(Evaluate(str), False, False), ",")
If varF <> "" Then .Range(varF).EntireRow.Delete
End With
Application.ScreenUpdating = True
End Sub
Sub copy1()
Dim r As Integer, c As Integer, str As String, varF As Variant
Application.ScreenUpdating = False
'clear data from sheet2
Sheet2.Range("A1").CurrentRegion.Cells.Clear
With Sheet1
'check & remove filtermode
If .AutoFilterMode = True Then .AutoFilterMode = False
With .[$A$1].CurrentRegion
'get rows & columns count of data range
r = .Rows.Count: c = .Columns.Count
'add header for helper column
.Offset(, c).Resize(1, 1) = "count"
End With
'formula for helper column
.Range(.Cells(2, c + 1), .Cells(r, c + 1)) = "=AND(COUNTIF($C$2:$C$15,C2)=1,COUNTIF($B$2:$B$15,B2)=1)"
.Range(.Cells(2, c + 1), .Cells(r, c + 1)).Value = .Range(.Cells(2, c + 1), .Cells(r, c + 1)).Value
'filter range with helper column
.Range("$A$1").CurrentRegion.AutoFilter Field:=c + 1, Criteria1:="FALSE"
'copy filtered range
.AutoFilter.Range.Resize(, c).copy
'paste the same in sheet2
Sheet2.Range("A1").PasteSpecial xlPasteValues
'remove autofilter
.AutoFilterMode = False
'remove copy area
Application.CutCopyMode = False
'remove helper column
.Range(.Cells(1, c + 1), .Cells(r, c + 1)) = ""
'make a array of data like as used in helper column
str = "=TRANSPOSE(IF(((COUNTIF($C$2:$C$" & r & ",$C$2:$C$" & r & ")=1)*COUNTIF($B$2:$B$" & _
r & ",$B$2:$B$" & r & ")=1),FALSE,ADDRESS(ROW($B$2:$B$" & r & "),2)))"
'evaluate formual & remove false
varF = Join(Filter(Evaluate(str), False, False), ",")
'check & delete the said rows
If varF <> "" Then .Range(varF).EntireRow.Delete
End With
Application.ScreenUpdating = True
End Sub
Sub copy1()
Dim r As Integer, c As Integer, str As String, varF As Variant
Application.ScreenUpdating = False
'clear data from sheet2
Sheet2.Range("A1").CurrentRegion.Cells.Clear
With Sheet1
'check & remove filtermode
If .AutoFilterMode = True Then .AutoFilterMode = False
With .[$A$1].CurrentRegion
'get rows & columns count of data range
r = .Rows.Count: c = .Columns.Count
'add header for helper column
.Offset(, c).Resize(1, 1) = "count"
End With
'formula for helper column
.Range(.Cells(2, c + 1), .Cells(r, c + 1)) = "=AND(COUNTIF($C$2:$C$15,C2)=1,COUNTIF($B$2:$B$15,B2)=1)"
.Range(.Cells(2, c + 1), .Cells(r, c + 1)).Value = .Range(.Cells(2, c + 1), .Cells(r, c + 1)).Value
'filter range with helper column
.Range("$A$1").CurrentRegion.AutoFilter Field:=c + 1, Criteria1:="FALSE"
'copy filtered range
.AutoFilter.Range.Resize(, c).copy
'paste the same in sheet2
Sheet2.Range("A1").PasteSpecial xlPasteValues
'remove autofilter
.AutoFilterMode = False
'remove copy area
Application.CutCopyMode = False
'remove helper column
.Range(.Cells(1, c + 1), .Cells(r, c + 1)) = ""
'make a array of data like as used in helper column
str = "=TRANSPOSE(IF(((COUNTIF($C$2:$C$" & r & ",$C$2:$C$" & r & ")=1)*COUNTIF($B$2:$B$" & _
r & ",$B$2:$B$" & r & ")=1),FALSE,ADDRESS(ROW($B$2:$B$" & r & "),2)))"
'evaluate formual & remove false
varF = Join(Filter(Evaluate(str), False, False), ",")
'check & delete the said rows
If varF <> "" Then .Range(varF).EntireRow.Delete
End With
Application.ScreenUpdating = True
End Sub
With Sheet1
If .AutoFilterMode = True Then .AutoFilterMode = False
With .[$A$1].CurrentRegion
r = .Rows.Count: c = .Columns.Count
.Offset(, c).Resize(1, 1) = "count"
End With
.Range(.Cells(2, c + 1), .Cells(r, c + 1)) = "=AND(COUNTIF($H$2:$H$691,H2)=1,COUNTIF($G$2:$G$691,G2)=1)"
.Range(.Cells(2, c + 1), .Cells(r, c + 1)).Value = .Range(.Cells(2, c + 1), .Cells(r, c + 1)).Value
.Range("$A$1").CurrentRegion.AutoFilter Field:=c + 1, Criteria1:="FALSE"
.AutoFilter.Range.Resize(, c).Copy
Sheet2.Range("A1").PasteSpecial xlPasteValues
.AutoFilterMode = False
Application.CutCopyMode = False
.Range(.Cells(1, c + 1), .Cells(r, c + 1)) = ""
str = "=TRANSPOSE(IF(((COUNTIF($H$2:$H$" & r & ",$H$2:$H$" & r & ")=1)*COUNTIF($G$2:$G$" & _
r & ",$G$2:$G$" & r & ")=1),FALSE,ADDRESS(ROW($H$2:$H$" & r & "),2)))"
varF = Join(Filter(Evaluate(str), False, False), ",")
If varF <> "" Then .Range(varF).EntireRow.Delete
End With
Application.ScreenUpdating = True
End Sub
Option Explicit
Sub copy2()
Dim r As Integer, c As Integer, str As String, varF As Variant
Application.ScreenUpdating = False
'clear data from sheet2
Sheet2.Range("A1").CurrentRegion.Cells.Clear
With Sheet1
'check & remove filtermode
If .AutoFilterMode = True Then .AutoFilterMode = False
With .[$A$1].CurrentRegion
'get rows & columns count of data range
r = .Rows.Count: c = .Columns.Count
'add header for helper column
.Offset(, c).Resize(1, 1) = "count"
End With
'formula for helper column
.Range(.Cells(2, c + 1), .Cells(r, c + 1)) = "=AND(COUNTIF($C$2:$C$" & r & ",C2)=1,COUNTIF($B$2:$B$" & r & ",B2)=1)"
.Range(.Cells(2, c + 1), .Cells(r, c + 1)).Value = .Range(.Cells(2, c + 1), .Cells(r, c + 1)).Value
'filter range with helper column
.Range("$A$1").CurrentRegion.AutoFilter Field:=c + 1, Criteria1:="FALSE"
'copy filtered range
.AutoFilter.Range.Resize(, c).Copy
'paste the same in sheet2
Sheet2.Range("A1").PasteSpecial xlPasteValues
' re filter
.Range("$A$1").CurrentRegion.AutoFilter Field:=c + 1, Criteria1:="TRUE"
'copy filtered range
.AutoFilter.Range.Resize(, c).Copy
'paste the same as temp
Sheet2.Cells(1, c + 2).PasteSpecial xlPasteValues
.AutoFilterMode = False
.Range("A1").CurrentRegion.Cells.Clear
Sheet2.Cells(1, c + 2).CurrentRegion.Copy
.Range("A1").PasteSpecial xlPasteAll
Sheet2.Cells(1, c + 2).CurrentRegion.Cells.Clear
End With
Application.ScreenUpdating = True
End Sub
Option Explicit
Sub copy3()
Application.ScreenUpdating = False
With Sheets("Sheet1")
.[A1].Name = "destBack": Sheets("Sheet2").[A1].Name = "des"
Sheet2.Range("A1").CurrentRegion.Cells.Clear
'check & remove filtermode
If .AutoFilterMode = True Then .AutoFilterMode = False
With .[$A$1].CurrentRegion
.Resize(, 1).Name = "fcol"
'formula for helper column
'IF(AND(COUNTIF($C$2:$C$698,$C2)=1,COUNTIF($B$2:$B$698,$B2)=1),TRUE,COUNTIF($B$2:$B$698,B2)=COUNTIF($C$2:$C$698,C2))
[fcol].Offset(, .Columns.Count) = _
"=if(row()=1,""dupe"",if(AND(COUNTIF(" & [fcol].Offset(, 2).Address & ",C1)=1,COUNTIF(" & _
[fcol].Offset(, 1).Address & ",B1)=1),TRUE,COUNTIF(" & [fcol].Offset(, 1).Address & ",B1)=COUNTIF(" & [fcol].Offset(, 2).Address & ",C1)))"
'convert to values
[fcol].Offset(, .Columns.Count).Value = [fcol].Offset(, .Columns.Count).Value
'criteria for advance filter
.Resize(2, 1).Offset(, 100) = Application.Transpose(Array("dupe", "FALSE"))
.Resize(2, 1).Offset(, 100).Name = "cri" 'set a named range for advance filter
End With
With .[$A$1].CurrentRegion
'advance filter for false values
.AdvancedFilter xlFilterCopy, [cri], [des], False
[cri] = Application.Transpose(Array("dupe", "TRUE")) 'change criteria for advance filter
' re advance filter for true values
.AdvancedFilter xlFilterCopy, [cri], [des].Offset(, 100), False
.Cells.Clear 'clear data from sheet1
'paste back data true values by advance filter
[des].Offset(, 100).CurrentRegion.AdvancedFilter xlFilterCopy, [cri], [destBack], False
'clear data from temp cells for true values
[des].Offset(, 100).CurrentRegion.Cells.Clear
[cri] = ""
.Resize(, 1).Offset(, .Columns.Count - 1) = ""
Sheet2.Range(.Resize(, 1).Offset(, .Columns.Count - 1).Address) = ""
End With
End With
Application.ScreenUpdating = True
End Sub