選單

Excel VBA 8.36實現按照延續排序功能 增強Excel通用性

前景提要

上節我們說到了顏色的計數,在Excel的自帶函式中,並沒有針對顏色的計數,所以利用VBA創造了一個對於顏色的統計的方法

這節我們繼續來補充Excel的不足,今天我們要補充的是Excel排序方面的不足,Excel其實是自帶排序功能的,但是僅僅是針對數字的排序,並沒有針對顏色的排序

所以和上節一樣,今天我們要利用VBA創造一個針對顏色的排序方法

場景說明

Excel VBA 8.36實現按照延續排序功能 增強Excel通用性

這是我們之前已經實現的按照不同內容,填充不同的單元格背景色,那麼我們現在就利用這個之前的結果,展開今天的內容,雖然這個顏色看起來還算是比較炫酷(別打我~),但是我們還是希望將相同顏色放在一起,這樣我們看起來會更加的方便,但是Excel自帶的排序,似乎並沒有針對顏色的排序,他的排序是針對單元格內容的排序,我們來看看

Excel VBA 8.36實現按照延續排序功能 增強Excel通用性

僅僅是實現了部分,整體看起來並沒有成功,所以我們還是要藉助VBA的方法來實現

程式碼區

Sub test5()

Dim rng As Range, a As Range

Set rng = Application。InputBox(“請選擇排序列參照列”,“區域的選擇”,,,,,,8)

Application。ScreenUpdating = False

rng。Insert

l = rng。Rows。Count

Application。ScreenUpdating = False

For Each a In rng

a。Offset(0,-1) = a。Interior。Color

Next

rng。CurrentRegion。Sort Key1:=rng(1)。Offset(0,-1), Header:=xlYes

Application。ScreenUpdating = True

Columns(rng(1)。Offset(0,-1)。Column)。Delete

End Sub

看看效果

Excel VBA 8.36實現按照延續排序功能 增強Excel通用性

是不是很成功

程式碼解析

進入今天的程式碼解析

這麼神奇的一個功能,VBA到底是如何來實現的呢?

其實很簡單,我們先說下方法,因為之前我們學習了獲得單元格的顏色是不是,這節我們就是利用了這個方法

我們將螢幕更新關閉

一起來看看

Excel VBA 8.36實現按照延續排序功能 增強Excel通用性

這裡程式碼在Excel中插入了一列,作為一個輔助列,這個輔助列有什麼用處呢?

難道將顏色寫到這個輔助列中?還真的是這樣,繼續往下走

Excel VBA 8.36實現按照延續排序功能 增強Excel通用性

這裡我們就看到,程式真的是將顏色寫入了輔助列,不過是一串數字,我們並不需要知道這些陣列,但是我們可以看出來,對應單元格顏色的數字值一致的,那麼然後我們就可以利用Excel自帶的排序功能了。

rng。CurrentRegion。Sort Key1:=rng(1)。Offset(0,-1), Header:=xlYes

range。sort方法

按照輔助列進行排序

其實就是按照輔助列的內容來進行排序

輔助列的內容其實就是單元格背景色的數字表達方法

這樣一說,你是不是理解了呢?

VBA按照顏色排序的本質,就是借用Excel的sort排序方法,不過要多做一步,將單元格的顏色轉化為數字展示出來,這些數字,就是排序的參照物。

怎麼樣,理解了本質,整個方法就很容易理解了吧。