答案1
啟用表自動過濾。
為狀態列設定條件格式,用一些令人愉悅的背景色標記高值。
將以下程式碼插入工作表模組中。根據需要在程式碼中編輯列號、標題儲存格位址和背景色值。
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then With AutoFilter.Sort .SortFields.Clear .SortFields.Add(Range("B1"), xlSortOnCellColor, xlAscending, , xlSortTextAsNumbers).SortOnValue.Color = RGB(242, 242, 242) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End If End Sub
現在,B 列中的每次變更都會對資料表重新排序。
附言。最終的行順序和更改的行的歸屬是不可預測的...您可以透過設定更詳細的排序標準來細化最終的順序。
聚苯硫醚。當然,您可以不使用條件格式,直接按數值排序。因此,請使用這篇文章作為範例,而不是解決方案。
答案2
我想建議一套VBA(巨集),將幫助您對行進行排序有高的按升序排列,然後填滿背景顏色。
排序前:
排序後:
- 要么按Alt+F11或者右鍵點擊這工作表選項卡開啟 VB 編輯器。
將這些 VBA 程式碼複製並貼上為標準模組。
Sub SortDataWithoutHeader() Range("Test12A.xlsm!Newdata1").Sort Key1:=Range("C2"), Order1:=xlAscending, Header:=xlYes Call Highlight End Sub
Sub Highlight()
Dim LastRow As Long, c As Range
Dim MyRange As Range
LastRow = Cells(Cells.Rows.Count, "C").End(xlUp).Row
Set MyRange = Range("C2:C" & LastRow)
For Each c In MyRange
If c.Value = "High" Then
c.EntireRow.Interior.Color = vbGreen
Else
c.EntireRow.Interior.Color = xlNone
End If
Next
End Sub
注意
- 在這一行中
Range("Test12A.xlsm!Newdata1")
,新數據1是個命名範圍,將避免編輯排序範圍每次都會輸入新行。 Interior.Color = vbGreen
,綠色是可編輯的。
編輯:
此程式碼將自動對每個新條目上的資料集進行排序和組織,並且僅突出顯示具有文字的單元格高的。
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("C:C")) Is Nothing Then
Range("C1").Sort Key1:=Range("C2"), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
Call Highlight
Application.EnableEvents = False
End If
End Sub
Sub Highlight()
Dim cell As Range
For Each cell In Range("C:C")
If cell.Value = "High" Then
cell.Interior.Color = XlRgbColor.rgbLightGreen
Else
cell.Interior.Color = xlNone
End If
Next cell
End Sub
根據需要調整 VBA 程式碼中的儲存格引用。
答案3
嘗試使用 Sortby() 函數。它是如此容易地工作。對於像我這樣的人(Excel 新手)來說,VBA 程式碼非常令人畏懼。