用button过滤值

我想创build一个button,将查找特定列中的值,并过滤它。

我有7列与数据和顶行我想创build一个像search栏/列过滤button。 这个想法是在单元格B2中input一个值,然后单击一个button使列G按B2中的值sorting。

这可能吗?

如果我的理解正确,“sorting”的意思是“过滤”,那么你可以做到以下几点。

在工作表上创build一个button(function区上的“开发人员”选项卡,插入…button),

在这里输入图像说明

并在出现提示时将以下代码添加到Button_Click() Sub:

 Private Sub CommandButton1_Click() [G:G].AutoFilter Field:=7, Criteria1:=Range("b2").Value End Sub 

要小心,不要把button放在可能被“过滤”的行上,否则会消失。 此外,如果您的“按此值sorting”字段在第2行,它也可能会消失。

我相信你可以弄清楚如何处理这些事情。

问题的替代解释

如果您正在寻找在单元格B2中给出名称的特定列上进行sorting,那么您的代码可能如下所示:

 Option Compare Text Sub Button1_Click() Dim sortCol As Integer Dim headerRange As Range Dim sortRange as Range ' assuming data to be sorted is in columns E through K set headerRange = [E1:K1] ' or wherever the headers are sortCol = WorksheetFunction.Match([B2].Value, headerRange) ' this line for debug: set sortRange = [E:E].Offset(, sortCol - 1) MsgBox "you will sort by column " & sortRange.Address With ActiveSheet .Range("E:K").Select .Sort.SortFields.Clear .Sort.SortFields.Add Key:=sortRange, _ SortOn:=xlSortOnValues, _ Order:=xlAscending, _ DataOption:=xlSortNormal With .Sort .SetRange Range("E:K") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End With End Sub