Отредактировано:

Отредактировано:

У меня есть несколько колонок, среди которых наиболее важными являются:Задания,Приоритет,Положение дел.

Мне нужны все строки записей, гдеприоритетговорит "Высокий" автоматически обновляться и появляться поверх других записей.

Мои познания в 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 будет изменять порядок данных в вашей таблице.

P.S. Окончательный порядок строк и принадлежность измененной строки непредсказуемы... Вы можете уточнить окончательный порядок, задав более подробные критерии сортировки.

PPS. Конечно, можно не использовать условное форматирование и сортировать по значению напрямую. Так что используйте этот пост как пример, а не решение.

решение2

Я хотел бы предложить набор VBA (Макрос), который поможет вам сортировать строки.Высокийв порядке возрастания, а затем залейте фоновым цветом.

Перед сортировкой:

введите описание изображения здесь


После сортировки:

введите описание изображения здесь


  • Либо нажмитеАльт+Ф11илиЩелкните правой кнопкой мыши the Вкладка листачтобы открыть редактор 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,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(). Это сработало так легко. Код VBA для кого-то вроде меня (новичка в Excel) был очень сложным.

Связанный контент