【发布时间】:2020-07-25 08:59:52
【问题描述】:
如何仅将过滤后的数据从每个工作表(总共 8 个工作表)复制到新工作簿?我过滤的标题因每个工作表而异,在 from 行中不是必需的。
我已经在这里发布了两组代码,任何帮助/建议都非常感谢,谢谢!
- 我写了一个愚蠢的过滤方式,因为对于没有太多 vba 知识的人,我想不出更好的方法来按国家过滤多张工作表。我必须在 8 个工作表中过滤国家,并且我有大约 20++ 个国家要过滤,参考另一个工作簿的下拉列表中选择的国家。下面是我为一个国家做的样本。
Sub FilterByCountry()
'Referencing the country selected
If Workbooks("PAP_Macro_v1.xlsm").Worksheets("Export by country").Range("C3") = "Australia" Then
'Filtering for each worksheet
Workbooks("SFDC_2020-xx_(PAP)-WD.xlsx").Worksheets("Summary PAP").Range("A1:I1").AutoFilter _
Field:=1, _
Criteria1:="Australia", _
VisibleDropDown:=True
End If
If Workbooks("PAP_Macro_v1.xlsm").Worksheets("Export by country").Range("C3") = "Australia" Then
Workbooks("SFDC_2020-xx_(PAP)-WD.xlsx").Worksheets("PAP").Range("A6:BK6").AutoFilter _
Field:=5, _
Criteria1:="Australia", _
VisibleDropDown:=True
End If
If Workbooks("PAP_Macro_v1.xlsm").Worksheets("Export by country").Range("C3") = "Australia" Then
Workbooks("SFDC_2020-xx_(PAP)-WD.xlsx").Worksheets("PAP by Country").Range("B6:AV6").AutoFilter _
Field:=2, _
Criteria1:="Australia", _
VisibleDropDown:=True
End If
If Workbooks("PAP_Macro_v1.xlsm").Worksheets("Export by country").Range("C3") = "Australia" Then
Workbooks("SFDC_2020-xx_(PAP)-WD.xlsx").Worksheets("PAP Target").Range("A1:I1").AutoFilter _
Field:=1, _
Criteria1:="Australia", _
VisibleDropDown:=True
End If
If Workbooks("PAP_Macro_v1.xlsm").Worksheets("Export by country").Range("C3") = "Australia" Then
Workbooks("SFDC_2020-xx_(PAP)-WD.xlsx").Worksheets("Country Summary Month").Range("A4:AD4").AutoFilter _
Field:=1, _
Criteria1:="Australia", _
VisibleDropDown:=True
End If
If Workbooks("PAP_Macro_v1.xlsm").Worksheets("Export by country").Range("C3") = "Australia" Then
Workbooks("SFDC_2020-xx_(PAP)-WD.xlsx").Worksheets("Users Summary Month").Range("A5:AK5").AutoFilter _
Field:=2, _
Criteria1:="Australia", _
VisibleDropDown:=True
End If
If Workbooks("PAP_Macro_v1.xlsm").Worksheets("Export by country").Range("C3") = "Australia" Then
Workbooks("SFDC_2020-xx_(PAP)-WD.xlsx").Worksheets("Country Summary YTD").Range("A4:AG4").AutoFilter _
Field:=1, _
Criteria1:="Australia", _
VisibleDropDown:=True
End If
If Workbooks("PAP_Macro_v1.xlsm").Worksheets("Export by country").Range("C3") = "Australia" Then
Workbooks("SFDC_2020-xx_(PAP)-WD.xlsx").Worksheets("Users Summary YTD").Range("A5:AJ5").AutoFilter _
Field:=2, _
Criteria1:="Australia", _
VisibleDropDown:=True
End If
End Sub
- 我想将所有工作表的过滤数据(可见单元格)从一个工作簿复制到另一个工作簿。我尝试运行以下代码,但它会复制所有数据,包括那些从过滤器中隐藏的数据。
Sub exportS()
Dim NewName As String
Workbooks("SFDC_2020-xx_(PAP)-WD.xlsx").Worksheets(Array("BU TEC PAP history", "Summary PAP", "PAP", "PAP by Country", _
"PAP Target", "Country Summary Month", "Users Summary Month", "Country Summary YTD", "Users Summary YTD")).Copy
NewName = InputBox("Please Specify the name of your new workbook", "Export by Country", "SFDC_2020-xx_(PAP)-[country]")
With ActiveWorkbook
.SaveCopyAs ThisWorkbook.Path & "\" & NewName & ".xlsx"
.Close SaveChanges:=False
End With
End Sub
【问题讨论】:
标签: excel vba filtering visible