我想創建一個按鈕,它將查找特定列中的值並按其進行過濾。使用按鈕進行值過濾
我有7列與數據和頂行我想創建像搜索欄/列過濾按鈕。這個想法是在單元格B2中輸入一個值,然後單擊一個按鈕使列G按B2中的值排序。
這可能嗎?
我想創建一個按鈕,它將查找特定列中的值並按其進行過濾。使用按鈕進行值過濾
我有7列與數據和頂行我想創建像搜索欄/列過濾按鈕。這個想法是在單元格B2中輸入一個值,然後單擊一個按鈕使列G按B2中的值排序。
這可能嗎?
如果我的理解正確,通過「排序」你的意思是「過濾器」,那麼你可以做到以下幾點。
創建你的表(在功能區,插入...按鈕,開發人員選項卡)按鈕,
並在提示時,將下面的代碼添加到Button_Click()
子:
Private Sub CommandButton1_Click()
[G:G].AutoFilter Field:=7, Criteria1:=Range("b2").Value
End Sub
請注意,您不要將按鈕放在可能會「過濾」或會消失的行上。另外,如果您的「按此值排序」字段在第2行,它也可能會消失。
我相信你可以弄清楚如何處理這些事情。
問題的另一種解釋
相反,如果你正在尋找排序的特定列,他的名字在B2單元格中給出,那麼你的代碼可能是這個樣子:
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
+ 1多走一步:) –
受你評論的啓發,@SiddharthRout! – Floris
謝謝,我不得不改變它到下面,現在它就像一個魅力! Private Sub CommandButton1_Click() [G:G] .AutoFilter Field:= 7,Criteria1:= Range(「b2」)。Value End Sub – user2030857
什麼你的意思是「按價值排序」? B2中的值是您想要排序的列的名稱?你試過什麼了? – Floris
是的,這是可能的。記錄一個宏來對範圍進行排序,然後簡單地修改它以接受一個值:)試一試,如果你被卡住了,那麼只需發佈你試過的代碼,我們就會從那裏拿到它... –
它是。我不能讓你現在的例子,但檢查:http://www.get-digital-help.com/excel-sort-using-array-formulas/ – gustavodidomenico