下午好,
我需要以下项目的帮助。
我正在尝试找到一个基于输入自动排序和自动颜色的宏。
例如,我有三列。在第一列中,我输入了感兴趣基因的基因型。在同一个excel中使用VLOOKUP表,该条目将返回第二列中该基因的等效表型。最后一栏,即第三列,将返回该表型如何影响疾病状态(例如,正常=绿色,慢=黄色,快速=红色)。
让我们说这是我们原始的电子表格显示为:
Genotype Phenotype Disease State
XX IM Slow
YY UM Fast
XY EM Normal
YY UM Fast
自动着色和自动排序完成其任务后,此表应显示为:
Genotype Phenotype Disease State
XY EM Normal
XX IM Slow
YY UM Fast
YY UM Fast
我找到了自动排序的宏,或者单独自动着色,但是当我尝试组合这些宏时,我一直都会遇到错误。
非常感谢任何帮助!
这些是我一直在尝试的宏。自动排序工作得很好,但自动着色我遇到了麻烦。我得到的错误范围,有时没有任何反应。
自动排序:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Range("A1").Sort Key1:=Range("A2"), _
Order1:=xlDescending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
End If
End Sub
自动着色:
Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub
If Target.Row < 1 Then Exit Sub
Select Case LCase(Target.Value)
Case "Normal"
Target.EntireRow.Interior.ColorIndex = 3
Case "Fast"
Target.EntireRow.Interior.ColorIndex = 4
Case "Slow"
Target.EntireRow.Interior.ColorIndex = 5
Target.EntireRow.Interior.ColorIndex = xlColorIndexAutomatic
End Select
Application.EnableEvents = True
End Sub
Sub changeApplicationEnableEvents2truee()
Application.EnableEvents = True
End Sub
答案 0 :(得分:0)
如果你有一个正常运行的自动排序宏,你可以使用它,然后尝试一些Conditional Formatting来设置颜色。
答案 1 :(得分:0)
正如@pnuts所说,一个问题是你似乎有2个Worksheet_Change例程。您的换色代码存在一些问题:使用LCase()强制您的字符串值全部为小写;只有改变的行才会改变颜色,而不是整个范围;等
我对你所拥有的东西进行了一些微小的改动。这会产生你想要的结果吗?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
On Error Resume Next
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Range("A1").Sort Key1:=Range("A2"), _
Order1:=xlDescending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
For Each rng In Intersect(ActiveSheet.UsedRange, Range("A:A")).Cells
If Not IsEmpty(rng) Then
Select Case rng.Offset(, 2).Value
Case "Normal"
rng.EntireRow.Interior.Color = vbGreen
Case "Fast"
rng.EntireRow.Interior.Color = vbRed
Case "Slow"
rng.EntireRow.Interior.Color = vbYellow
Case Else
rng.EntireRow.Interior.ColorIndex = xlColorIndexNone
End Select
End If
Next rng
End If
End Sub