一系列 Microsoft 試算表軟體,具有可用來對資料進行分析、製圖及通訊的工具。
您好 弒小痕
歡迎來到微軟社區.
根據您的描述,不用擔心,我們可以共同努力,不斷接近答案。
據你發佈的 / Excel / 類別,我們知道你的問題是*"在Excel中使用塞選的時候會導致你的程式異常地卡"*。如果我的理解是錯誤的,請您隨時糾正我。
在觀察你提供的表格之後,我們發現其中A列帶有3703條資料,並且搭配使用條件格式篩選重複值.
這的確可能需要一些時間,因為每次點擊篩選的時候會不斷地生成查找帶有條件格式的儲存格,以下是測試電腦對使用條件格式的A列塞選.这大概花費了6-8S的時間生成.以下圖片是打開當前Excel檔的測試機器的CPU和記憶體資訊:
這可能是一個預期的行為. 如果去除了整個儲存格的條件格式,則您在點擊將可以做到流暢開啟
當然,如果您覺得條件格式的運行效率會拖垮你的應用程式,以下的VBA代碼可以幫助你篩選出這些重複值,並且佔用資源更低效率會更高,而且您在點擊的時候也不會卡頓:
Sub ColorMe()
On Error Resume Next
c = InputBox("請輸入列標", , "C")
r = Cells(65536, c).End(xlUp).Row
arr = Cells(1, c).Resize(r, 1).Value
'獲取重複次數
Set d = CreateObject("scripting.dictionary")
For i = 1 To r
d(arr(i, 1)) = d(arr(i, 1)) + 1
Next i
'判斷是否需要上色並隨機出顏色值
ks = d.keys
its = d.items
For i = 0 To UBound(ks)
If its(i) > 1 Then
d.Item(ks(i)) = RGB(Int(Rnd * 99) + 99, Int(Rnd * 99) + 99, Int(Rnd * 99) + 99)
Else
d.Item(ks(i)) = xlNone
End If
Next
'逐行查字典賦予顏色值
t = Cells(1, 256).End(xlToLeft).Column
For i = 1 To r
Cells(i, 1).Resize(1, t).Interior.Color = d(arr(i, 1))
Next
Set d = Nothing
End Sub
完成之後您的塞選可以根據不同值對應的顏色進行挑選.
注:如果需要使用該VBA代碼,請嘗試將其複製到你的Word文檔 >> 然後右擊工作簿的"檢視程式碼"
>> 從Word文檔複製進去 >> 完成之後點擊上方"播放按鈕" >> 在彈窗輸入A >> 將會生成對重複值的標記
我希望這有幫助,如果有什麼更新,請隨時告知.
Chandy|Microsoft 社區支持專家