Ich habe einige Spalten, die wichtigsten davon sind:Aufgaben,Priorität,Status.
Ich möchte alle Zeilen von Datensätzen, bei denen diePrioritätsagt "Hoch", um sich automatisch zu aktualisieren und über den anderen Datensätzen zu erscheinen.
Meine VB-Kenntnisse beschränken sich auf das Öffnen des VB-Editors. Bitte helfen Sie.
BEARBEITEN
Hier ist ein Screenshot von dem, was ich versuche zu tun. Ich habe bereits eine bedingte Formatierung festgelegt, um alle Zeilen hervorzuheben, in denenPrioritätzeigt alshoch. Jetzt müssen alle diese Datensätze (und die neuen Datensätze mit „hoher“ Priorität, wenn sie hinzugefügt werden) automatisch über den anderen Datensätzen angezeigt werden.
Antwort1
Aktivieren Sie die automatische Tabellenfilterung.
Legen Sie eine bedingte Formatierung für die Spalte „Status“ fest und markieren Sie hohe Werte mit einer angenehmen Hintergrundfarbe.
Fügen Sie den untenstehenden Code in das Arbeitsblattmodul ein. Bearbeiten Sie im Code nach Bedarf die Spaltennummer, die Kopfzellenadresse und den Hintergrundfarbwert.
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
Jetzt führt jede Änderung in Spalte B zu einer Neuanordnung Ihrer Datentabelle.
PS. Die endgültige Zeilenreihenfolge und der Besitz geänderter Zeilen sind unvorhersehbar. Sie können die endgültige Reihenfolge verfeinern, indem Sie detailliertere Sortierkriterien festlegen.
PPS. Natürlich können Sie die bedingte Formatierung weglassen und direkt nach dem Wert sortieren. Verwenden Sie diesen Beitrag also als Beispiel und nicht als Lösung.
Antwort2
Ich möchte eine Reihe von VBA (Makro) vorschlagen, die Ihnen helfen werden, Zeilen zu sortierenHochin aufsteigender Reihenfolge und danach mit Hintergrundfarbe füllen.
Vor dem Sortieren:
Nach dem Sortieren:
- Drücken Sie entwederAlt+F11oderRechtsklickDieRegisterkarte „Tabelle“um den VB-Editor zu öffnen.
Kopieren und fügen Sie diesen VBA-Code als Standardmodul ein.
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
Achtung
- In dieser Zeile
Range("Test12A.xlsm!Newdata1")
,Neue Daten1ist derBenannter Bereich, vermeidet die BearbeitungZu sortierender Bereichjedes Mal, wenn eine neue Zeile eingegeben wird. Interior.Color = vbGreen
,vbGrünist editierbar.
Bearbeitet:
Dieser Code sortiert und organisiert den Datensatz bei jedem neuen Eintrag automatisch und hebt nur die Zellen hervor, die Text enthalten.Hoch.
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
Passen Sie die Zellbezüge im VBA-Code nach Bedarf an.
Antwort3
Versuchen Sie es mit der Funktion Sortby(). Das funktionierte ganz einfach. Der VBA-Code war für jemanden wie mich (Excel-Anfänger) sehr entmutigend.