同上,并增加条件筛选
时间: 2024-09-27 15:09:42 浏览: 22
客户数据结构报表需求规格书文档.pdf
如果你想在合并不同工作簿的数据前添加条件筛选,可以在循环之前先对每个源工作簿进行筛选操作。以下是更新后的代码示例:
```vb
Sub MergeSheetsWithFilter()
Dim sourceBook As Workbook
Dim targetSheet As Worksheet
Dim sourceWs As Worksheet
Dim filterRange As Range
'指定源工作簿路径(假设源工作簿都在同一目录下)
sourceBook = Workbooks.Open("source_file.xlsx")
'设定过滤条件范围,例如A列大于10的记录
Set filterRange = sourceBook.Worksheets("Sheet1").Columns(1).SpecialCells(xlCellTypeVisible, xlGreater Than 10)
'应用筛选
If Not filterRange Is Nothing Then
sourceWs.Range(filterRange, sourceWs.Cells(sourceWs.Rows.Count, sourceWs.Columns.Count)).AutoFilter Field:=1, Criteria1:=">10"
Else
MsgBox "所有数据都将被合并"
End If
'遍历源工作簿的所有工作表
For Each sourceWs In sourceBook.Worksheets
'设置目标工作簿(这里假设合并到第一个工作表)
Set targetSheet = ThisWorkbook.Sheets(1)
'选择目标工作表的开始位置
targetSheet.Cells(targetSheet.Cells.Rows.Count, 1).End(xlUp).Offset(1, 0).Select '跳过第一行标题
'将筛选过的源工作表内容复制并粘贴到目标位置
sourceWs.AutoFilterMode = False '取消当前筛选
sourceWs.Copy
ActiveSheet.Paste Special xlPasteValuesAndNumberFormats '保留格式
Application.CutCopyMode = False '移除剪切模式
Next sourceWs
'关闭源工作簿
sourceBook.Close SaveChanges:=False
End Sub
```
在这个版本中,我们首先设置了筛选条件(这里是A列大于10),然后检查是否有数据满足此条件。如果满足,就对符合条件的数据进行筛选;如果不满足,则提示所有数据都将被合并。
阅读全文