Vba 自动着色和自动排序宏Excel 2010

Vba 自动着色和自动排序宏Excel 2010,vba,sorting,excel,Vba,Sorting,Excel,下午好 我需要以下项目的帮助 我试图找到一个宏,它可以根据输入自动排序和自动着色 例如,我有三列。在第一列中,我输入感兴趣基因的基因型。使用同一excel中的VLOOKUP表,该条目将在第二列中返回该基因的等效表型。最后一列,第三列,将返回该表型如何影响疾病状态(例如,正常=绿色,慢速=黄色,快速=红色) 让我们假设这是我们最初的电子表格显示的内容: Genotype Phenotype Disease State XX IM Slow YY

下午好

我需要以下项目的帮助

我试图找到一个宏,它可以根据输入自动排序和自动着色

例如,我有三列。在第一列中,我输入感兴趣基因的基因型。使用同一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
子工作表\u更改(ByVal目标作为范围)
如果为Target.Column 1,则退出Sub
如果Target.Row<1,则退出Sub
选择案例LCase(Target.Value)
案例“正常”
Target.EntireRow.Interior.ColorIndex=3
案例“快速”
Target.EntireRow.Interior.ColorIndex=4
案例“慢”
Target.EntireRow.Interior.ColorIndex=5
Target.EntireRow.Interior.ColorIndex=xlColorIndexAutomatic
结束选择
Application.EnableEvents=True
端接头
子变更ApplicationEnableEvents2Truee()
Application.EnableEvents=True
端接头

如果您有一个功能正常的自动排序宏,您可以使用它,然后尝试一些设置颜色。

正如@pnuts所说,一个问题是您似乎有两个工作表更改例程。您的颜色更改代码存在一些问题:使用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

你说你遇到了错误,你能把你试过的代码贴出来让我们看看你在做什么吗?“嗨,约翰,”他补充道。错误的范围很广,在某些情况下,什么都没有发生。自动排序本身的工作很好,但自动着色我有麻烦。当我尝试将自动着色添加到与自动着色相同的工作表时,会出现“检测到名称不明确”错误。谢谢。嗨,瑞克,自动排序宏很好用。他们更喜欢将整个过程自动化,而不是手动设置条件格式。除非您所指的是执行条件格式设置的宏?谢谢。条件格式是自动的。您只需设置需要格式化的单元格范围的规则,颜色将根据单元格中的值进行更改。