小编Kry*_*ulc的帖子

Excel VBA通​​过连续单击单元格/文本按多个条件排序

我正在尝试根据点击的列标题对表中的excel列进行排序.到目前为止,我有下面的代码,它工作正常.我单击标题,表格按我单击的列标题排序.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    If Not Intersect(ActiveCell, Range("active[#Headers]")) Is Nothing Then
        Dim KeyRange As Range
        Set KeyRange = Range(Target.Address)

        SortOrder = xlAscending

        If Target.Value = "price" Then
            SortOrder = xlDescending
        End If

        If Target.Value = "profit" Then
            SortOrder = xlDescending
        End If

        Range("active").Sort Key1:=KeyRange, Header:=xlYes, Order1:=SortOrder
    End If

End Sub
Run Code Online (Sandbox Code Playgroud)

当我单击不同的标题单元格时,将取消先前的排序并设置new.这就是我想改变的地方.我想添加二级排序标准,而不是更改主要标准.

我想按多个标准排序,只需连续点击不同的标题单元格即可.例如,首先按价格排序,然后按截止日期排序,然后按其他方式排序.这种组合可能不同,所以我不能真正使用vba排序标准1,2,3并在一次通过中进行排序.

为了清除排序顺序,我使用这个:

ActiveWorkbook.Worksheets("active").ListObjects("active").Sort.SortFields. _
    Clear
Run Code Online (Sandbox Code Playgroud)

你有什么想法,如何实现这个目标?

请不要问我为什么我按照它的编写方式编写代码.我不知道.不幸的是,我不是编码员,我粗略地理解代码是如何工作的,但我没有更深入的知识.我只是通过搜索然后尝试它是如何工作的(或更常见的是它不起作用)将来自不同来源的代码放在一起.

sorting excel vba

9
推荐指数
1
解决办法
223
查看次数

标签 统计

excel ×1

sorting ×1

vba ×1