편집됨:

편집됨:

몇 가지 열이 있는데 그 중 중요한 것은 다음과 같습니다.작업,우선 사항,상태.

나는우선 사항"라고 말한다높은"를 자동으로 업데이트하여 다른 기록 위에 표시합니다.

VB에 대한 나의 지식은 VB 편집기를 여는 것으로 제한됩니다. 도와주세요.

편집하다

다음은 내가하려는 일의 스크린 샷입니다. 나는 이미 모든 행을 강조 표시하기 위해 일부 조건부 서식을 설정했습니다.우선 사항다음과 같이 표시됩니다.높은. 이제 모든 레코드(및 추가될 때마다 "높은" 우선순위를 갖는 새 레코드)가 자동으로 다른 레코드 위에 나타나도록 해야 합니다.

엑셀 스크린샷

답변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,vb녹색편집 가능합니다.

편집됨:

이 코드는 모든 새 항목에 대해 데이터 세트를 자동으로 정렬 및 구성하며 강조 표시 셀에만 텍스트가 있습니다.높은.

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 코드는 매우 어려운 작업이었습니다.

관련 정보