編輯:

編輯:

我有幾篇專欄,其中重要的是:任務,優先事項,地位

我想要所有記錄行優先事項說“高的” 自動更新自身並出現在其他記錄的頂部。

我對VB的了解僅限於開啟VB編輯器。請幫忙。

編輯

這是我正在嘗試做的事情的螢幕截圖。我已經設定了一些條件格式來突出顯示所有行優先事項顯示為高的。現在我需要所有這些記錄(以及在新增時具有「高」優先權的新記錄)自動顯示在其他記錄的頂部。

Excel截圖

答案1

  1. 啟用表自動過濾。

  2. 為狀態列設定條件格式,用一些令人愉悅的背景色標記高值。

  3. 將以下程式碼插入工作表模組中。根據需要在程式碼中編輯列號、標題儲存格位址和背景色值。

    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 程式碼非常令人畏懼。

相關內容