【发布时间】:2019-08-08 07:08:32
【问题描述】:
我想在 Excel 中对大量数据进行排序。它应该在每次点击时在升序和降序之间切换。
我发现这个问题在下一个帖子中解决了: sort ascending/descending vba excel.
但我想对代码进行一些更改。 我想使用我单击的当前列(标题)进行排序。我不知道这是否可能只使用一个宏并发送我调用事件的单元格。
这是我正在使用的代码:
工作表(我称之为 Sub):
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Selection.Count = 1 Then
If Not Intersect(Target, Range("A2:C2")) Is Nothing Then
Call sort_table(Target)
End If
End If
End Sub
子:
Sub sort_by_letters(Order As Range)
Dim dataRange As Range
Dim fieldOrder As Range
Dim xlSort As XlSortOrder
Dim LastRow As Long
With ActiveSheet
Set LastRow = .Cells(.Rows.Count, Order).End(xlUp).Row
End With
If (Order.Value > Range(Column(Order) & CStr(LastRow))) Then
xlSort = xlAscending
Else
xlSort = xlDescending
End If
Set dataRange = Range("A2:C" & LastRow)
Set campoOrden = Order
dataRange.Sort key1:=fieldOrder, order1:=xlSort, Header:=xlYes
End Sub
【问题讨论】:
-
你能举个例子吗?标题是什么样的,它们如何驱动对另一列进行排序的方式?
-
这是我正在使用的示例,当我单击标题时,这应该被视为枢轴列,并在升序和降序排序之间切换。这是表格的示例imgur.com/a/NQA5oik