答え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 を変更するたびにデータ テーブルの順序が変わります。
PS. 最終的な行の順序と変更された行の所有は予測できません... より詳細な並べ替え基準を設定することで、最終的な順序を絞り込むことができます。
PPS. もちろん、条件付き書式を使用せずに値で直接並べ替えることもできます。したがって、この投稿はソリューションではなくサンプルとして使用してください。
答え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 コードは非常に困難でした。