Как в ячейку вставить кнопку фильтра и сортировки как на картинке?
Как добавить кнопку фильтра и сортировки в ячейку?
comment
Спасибо за ответ!
- person Skyler Cheah   schedule 09.10.2015
Ответы (2)
или лучше, нажмите на заполненную ячейку, а затем «Главная» >> «Форматировать как таблицу». Он дает вам множество вариантов фильтрации, сортировки и копирования формул, а также интересный дизайн.
Форматировать как скриншот таблицы
person
George
schedule
08.10.2015
Разум = Взорван! Я работал над подпрограммой, чтобы добавить
filter
в ws, все прошло нормально, затем я хотел также добавить кнопку одним щелчком мыши для сортировки, но, похоже, это невозможно, это просто сборка как фильтр. Но мне больше нравится настольный вариант, теперь гораздо больше новых вещей для изучения.
- person FreeSoftwareServers; 30.09.2020
Вот некоторый код, который можно использовать с ответом Джорджа об использовании таблицы.
Я сразу же столкнулся с проблемой добавления таблиц, когда фильтры работают нормально. Вы не можете преобразовать диапазон запроса в таблицу, но можете добавить фильтр. См. --› https://stackoverflow.com/a/40492129/5079799 и отказ от ответственности. Это мой блог, где я буду разместить обновленный код https://www.freesoftwareservers.com/display/FREES/Filter+Worksheet+-+Table+-+Query+-+Excel+VBA
Public Sub DatatoTable(ws As Worksheet)
Dim TblStyle As String
TblStyle = "TableStyleMedium20"
Dim TblName As String
TblName = ws.Name
Dim TblRng As Range
Set TblRng = GetUsedRange(ws)
ws.Activate
TblRng.Select
Set lo = TblRng.ListObject
If Not lo Is Nothing Then
Debug.Print "Table Found"
Else
ws.ListObjects.Add(xlSrcRange, TblRng, , xlYes).Name = TblName
Range(TblName & "[#All]").Select
ws.ListObjects(TblName).TableStyle = TblStyle
End If
End Sub
Public Function GetUsedRange(ws As Worksheet) As Range
Dim lRow As Integer, lCol As Integer, fCol As Integer, fRow As Integer
fCol = Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlLeft).Column
lCol = Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
fRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlDown).Row
lRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Set GetUsedRange = ws.Range(Cells(fRow, fCol), Cells(lRow, lCol))
End Function
Sub Test()
Call DatatoTable(ActiveSheet)
End Sub
person
FreeSoftwareServers
schedule
30.09.2020