VBA中根据某个指定的单元格进行筛选

 Sub search_data()
 
 Set x = Worksheets("销售查询").Range("E6")
 
 Sheets("销售数据库").Select
    ActiveSheet.ListObjects("表1").Range.AutoFilter Field:=3, Criteria1:=x
 
 End Sub

AutoFilter Field :筛选的字段位于筛选区域的第几列 

以下是VBA代码,可以实现你提到的四个任务: ``` Sub ProcessExcel() Dim wb As Workbook Dim ws As Worksheet Dim ws1 As Worksheet Dim ws2 As Worksheet Dim ws3 As Worksheet Dim ws4 As Worksheet Dim lastRow As Long Dim lastRow1 As Long Dim lastRow2 As Long Dim lastRow3 As Long Dim lastRow4 As Long Dim i As Long Dim j As Long Dim k As Long Dim l As Long Dim temp As Variant ' 打开文件夹的某个工作簿 Set wb = Workbooks.Open("C:\folder\workbook.xlsx") Set ws = wb.Worksheets("Sheet1") ' 排序某字段为升序 ws.Sort.SortFields.Clear ws.Sort.SortFields.Add Key:=Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ws.Sort.SetRange Range("A1:D100") ' 修改为你需要排序的区域 ws.Sort.Header = xlYes ws.Sort.MatchCase = False ws.Sort.Orientation = xlTopToBottom ws.Sort.SortMethod = xlPinYin ws.Sort.Apply ' 摘取指定字段的值存放在表1 Set ws1 = wb.Worksheets("Sheet2") ' 修改为你需要操作的工作表 lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row ' 修改为你需要摘取的区域 j = 1 ' 修改为你需要摘取的列数 For i = 2 To lastRow temp = ws.Cells(i, j).Value ws1.Cells(i - 1, 1).Value = temp Next i ' 将表1的所有值追加到表2 Set ws2 = wb.Worksheets("Sheet3") ' 修改为你需要操作的工作表 lastRow1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row lastRow2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To lastRow1 temp = ws1.Cells(i, 1).Value ws2.Cells(lastRow2 + i, 1).Value = temp Next i ' 将表3的重复值根据另外字段最小值,删除重复值得整行数据 Set ws3 = wb.Worksheets("Sheet4") ' 修改为你需要操作的工作表 lastRow3 = ws3.Cells(Rows.Count, 1).End(xlUp).Row ws3.Range("A1:D" & lastRow3).RemoveDuplicates Columns:=Array(1, 2, 3, 4), Header:=xlYes ' 修改为你需要删除重复行的区域 ' 将表4根据某单元格的值筛选表3的全部内容放在表4指定单元格 Set ws4 = wb.Worksheets("Sheet5") ' 修改为你需要操作的工作表 lastRow4 = ws4.Cells(Rows.Count, 1).End(xlUp).Row ws3.Range("A1:D" & lastRow3).AutoFilter Field:=1, Criteria1:=ws4.Range("A1").Value ' 修改为你需要筛选的列数和条件单元格 k = 2 ' 修改为你需要写入结果的起始行数 For l = 2 To lastRow3 If ws3.Cells(l, 1).EntireRow.Hidden = False Then ws4.Cells(k, 1).Value = ws3.Cells(l, 1).Value ws4.Cells(k, 2).Value = ws3.Cells(l, 2).Value ws4.Cells(k, 3).Value = ws3.Cells(l, 3).Value ws4.Cells(k, 4).Value = ws3.Cells(l, 4).Value k = k + 1 End If Next l ' 刷新屏幕 Application.ScreenUpdating = True End Sub ``` 请根据你的实际情况修改代码的文件路径、工作表名称、区域和单元格等参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值