Note: The other languages of the website are Google-translated. Back to English

如何通過單擊Excel中的標題對列數據進行排序?

假設我有一系列數據,現在,我想通過單擊任意列標題以顯示以下屏幕截圖按升序或降序對數據進行排序。 您如何在Excel中解決這項工作?

doc按1排序

通過單擊帶有VBA代碼的列標題對數據進行排序


箭頭藍色右氣泡 通過單擊帶有VBA代碼的列標題對數據進行排序

通常,在Excel中,您可以應用“排序”功能來快速,輕鬆地對數據進行排序,但是,通過單擊單元格來對數據進行排序,以下VBA代碼可以幫您一個忙。

1。 右鍵單擊要對數據進行排序的工作表標籤,方法是單擊一個單元格,然後選擇 查看代碼 從上下文菜單中,然後在打開的 適用於應用程序的Microsoft Visual Basic 窗口,將以下代碼複製並粘貼到空白模塊中:

VBA代碼:通過單擊單元格或列標題對數據進行排序:

Public blnToggle As Boolean
Private Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)
'Updateby Extendoffice
Dim LastColumn As Long, keyColumn As Long, LastRow As Long
Dim SortRange As Range
LastColumn = _
Cells.Find(What:="*", After:=Range("A1"), _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
keyColumn = Target.Column
If keyColumn > LastColumn Then Exit Sub
Application.ScreenUpdating = False
Cancel = True
LastRow = Cells(Rows.Count, keyColumn).End(xlUp).Row
Set SortRange = Target.CurrentRegion
blnToggle = Not blnToggle
If blnToggle = True Then
SortRange.Sort _
Key1:=Cells(2, keyColumn), Order1:=xlAscending, Header:=xlYes
Else
SortRange.Sort _
Key1:=Cells(2, keyColumn), Order1:=xlDescending, Header:=xlYes
End If
Set SortRange = Nothing
Application.ScreenUpdating = True
End Sub

doc按2排序

2。 然後保存並關閉代碼窗口,現在,當您雙擊數據范圍內的任何單元格或列標題時,該列將以升序排序,如果再次雙擊它,則該列將立即降序排序。


更多相關文章:

如何通過單擊單元格來更改單元格值?

如何僅通過單擊Excel中的單元格內容來過濾數據?


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (6)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
可以正常上升,雙擊第二次下降沒有任何作用
網站主持人對此評論進行了最小化
不起作用,沒有任何反應,知道如何在 vba 中創建模塊,做到了,保存了,雙擊標題時什麼也沒有。 請修復它。
網站主持人對此評論進行了最小化
不可以做餅乾 - 不工作
網站主持人對此評論進行了最小化
嗨,Rob,上面的代碼在我的 Excel 中運行良好,你能在這裡給你的問題截圖嗎?
網站主持人對此評論進行了最小化
您好!
der Code funktioniert auch gut bei mir。 Allerdings würde ich gerne die oberen beiden Zeilen nicht mit sortieren, da diese die Überschriften sind。
Wie muss ich dann diesen Code ändern?

謝謝!!
網站主持人對此評論進行了最小化
朋友你好,
這是您需要的VBA:

公共 blnToggle 作為布爾值
私有子工作表_BeforeDoubleClick _
(ByVal 目標為範圍,取消為布爾值)
'更新通過 Extendoffice
暗淡 LastColumn As Long、keyColumn As Long、LastRow As Long
將 SortRange 調暗為範圍
最後一列 = _
Cells.Find(What:="*", After:=Range("A1"), _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
keyColumn = Target.Column
如果 keyColumn > LastColumn 然後退出 Sub
Application.ScreenUpdating = False
取消=真
LastRow = Cells(Rows.Count,keyColumn).End(xlUp).Row
在錯誤恢復下一頁
設置 SortRange = Target.CurrentRegion
昏暗的我只要
I = 2
設置 SortRange = SortRange.Offset(i, 0)
設置 SortRange = SortRange.Resize(SortRange.Rows.Count - i, SortRange.Columns.Count)
blnToggle = 不是 blnToggle
如果 blnToggle = True 那麼
排序範圍.排序_
Key1:=Cells(2, keyColumn), Order1:=xlAscending, Header:=xlNo
其他
排序範圍.排序_
Key1:=Cells(2, keyColumn), Order1:=xlDescending, Header:=xlNo
如果結束
設置 SortRange = 無
Application.ScreenUpdating = True
END SUB


如果您有 3 行的標題,只需在 VBA 中將“i =2”更改為“i =3”。 希望能幫助到你。 祝你有美好的一天。

此致,
曼迪
這裡還沒有評論
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護