Excel VBA - 应用自动过滤器并按特定颜色排序

2023-12-01

我有一个自动过滤的数据范围。自动过滤器是由以下 VB 代码创建的:

Sub Colour_filter()

Range("A4").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.AutoFilter

End Sub

我想按以下颜色( Color = RGB(255, 102, 204) )对“A”列中的值(数据实际上从单元格“A4”开始)进行排序,因此具有该颜色的所有单元格都排序到顶部。

如果可以将额外的代码添加到我现有的代码中,那就太好了?

我的办公室真的很吵,而且我的 VB 也不是最好的。那些一直在笑、在聊天的女士们是加倍困难的。任何帮助都将是缓解压力的天堂! (附:不要嘲笑女士们,只是我的办公室 95% 都是女性)。


根据 @ScottHoltzman 的请求进行编辑。

我请求的代码构成了较大代码的一部分,这会使事情变得混乱,尽管这是我当前需要的方面的精简版本。

Sub Colour_filter()
' Following code( using conditional formatting) adds highlight to 'excluded' courses based
'on 'course code' cell value matching criteria. Courses codes matching criteria are highlighted
'in 'Pink'; as of 19-Nov-2012 the 'excluded' course codes are
'(BIGTEST, BIGFATCAT).

' <====== CONDITIONAL FORMATTING CODE STARTS HERE  =======>
    Columns("A:A").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""BIGTEST"""
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Interior
    .Color = 13395711
   End With

Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=""BIGFATCAT"""
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Interior
    .Color = 13395711

End With

' <====== CONDITIONAL FORMATTING CODE ENDS HERE  =======>

' Following code returns column A:A to Font "Tahoma", Size "8"
  Columns("A:A").Select
    With Selection.Font
        .Name = "Tahoma"
        .FontStyle = "Regular"
        .Size = 8
        .ThemeColor = xlThemeColorLight1
        .ThemeFont = xlThemeFontNone

     End With
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlTop
        .WrapText = False
    End With

' Following code adds border around all contiguous cells ion range, similar to using keyboard short cut "Ctrl + A".
Range("A4").Select
ActiveCell.CurrentRegion.Select


With Selection
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    End With
With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With



' Following code adds 'Blue' cell colour to all headers in Row 4 start in Cell "A4".

 Range("A4").Select
    Range(Selection, Selection.End(xlToRight)).Select
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlTop
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorLight2
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    Selection.Font.Bold = True

'<== adds auto-filter to my range of cells ===>

Range("A4").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.AutoFilter

End Sub

那么这里有一个小Sub根据所示图像进行以下排序。大多数值(例如尺寸/范围大小)都是非常静态的,因为这是一个示例。您可以将其改进为动态的。请评论此代码是否朝着正确的方向发展这样我就可以更新最终的排序。

使用双排序键编辑代码

代码: 选项显式

子按颜色排序() 调光范围
将 i 调暗为整数 Dim inputArray 作为变体,colorSortID 作为变体 暗色索引只要长

Set rng = Sheets(1).Range("D2:D13")
colourIndex = Sheets(1).Range("G2").Interior.colorIndex

 ReDim inputArray(1 To 12)
 ReDim colourSortID(1 To 12)

For i = 1 To 12
    inputArray(i) = rng.Cells(i, 1).Interior.colorIndex
    If inputArray(i) = colourIndex Then
        colourSortID(i) = 1
    Else
        colourSortID(i) = 0
    End If
Next i

'--output the array with colourIndexvalues and sorting key values
 Sheets(1).Range("E2").Resize(UBound(inputArray) + 1) = _ 
                   Application.Transpose(inputArray)
 Sheets(1).Range("F2").Resize(UBound(colourSortID) + 1) = _ 
                   Application.Transpose(colourSortID)

 '-sort the rows based on the interior colour
 Application.DisplayAlerts = False
 Set rng = rng.Resize(, 3)

    rng.Sort Key1:=Range("F2"), Order1:=xlDescending, _
    Key2:=Range("E2"), Order1:=xlAscending, Header:=xlNo, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal

 Application.DisplayAlerts = True

 End Sub

output:

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel VBA - 应用自动过滤器并按特定颜色排序 的相关文章

随机推荐

  • Oracle SQL 正则表达式未返回预期结果

    我正在使用一个在 Java PHP regex 测试器中完美运行的正则表达式 d s d 3 例子 https regex101 com r oH6jV0 1 但是 尝试在 Oracle SQL 中使用相同的正则表达式不会返回任何结果 举个
  • 通过webapp重启tomcat

    我有一个关于通过我的 web 应用程序重新启动 tomcat 服务器的疯狂请求 我为此搜索了近 2 天 我发现的只是执行外部批处理文件或调用另一个程序来执行此操作 使用java代码有没有最佳的解决方案 我错过了什么吗 为什么不直接创建一个脚
  • 如何使用 Objective C 在 iPhone 的表格视图上应用复选标记?

    我正在尝试在表视图中申请复选标记 但它不起作用 如果我再次在该单元格中再次检查 则复选标记适用 但不适用于新选定的单元格 那里有谁能帮助我 谢谢阿米尔 我正在使用以下代码 pragma mark pragma mark Table Data
  • 无法使用 popen 启动两个交互式 shell

    我有以下 Python 代码片段 但无法解释它为什么会这样 import subprocess bash1 subprocess Popen bin bash l i stdin subprocess PIPE print Checkpoi
  • 类型错误网格搜索

    我曾经创建循环来寻找模型的最佳参数 这增加了编码中的错误 所以我决定使用GridSearchCV 我正在尝试为我的模型找出 PCA 的最佳参数 我想要进行网格搜索的唯一参数 在这个模型中 归一化后 我想将原始特征与 PCA 缩减特征相结合
  • JavaScript。如何比较输入数组

    我已经被这个问题困扰三天了 请有人帮助我 挑战5构造一个函数intersection比较输入数组并返回一个新数组 其中包含在所有输入中找到的元素 function intersection arrayOfArrays console log
  • 您可以将实例变量声明为构造函数中的参数吗?

    这行得通吗 class Cars Cars int speed int weight 我只是想弄清楚构造函数 如果它像方法一样被调用 那么我认为它会像方法一样工作 您可以在调用该方法时使用的方法中创建局部变量 因此我不明白为什么必须在构造函
  • 推送通知委托回调未被调用

    我通过调用以下代码来注册推送通知 UIApplication sharedApplication registerForRemoteNotificationTypes UIRemoteNotificationTypeBadge UIRemo
  • ESP 和 EAX 一样通用吗?

    在x86架构下 可以做什么EAX但不与ESP 忘记了push and pop and call ESP 由中断隐式异步使用 在现代操作系统中 这只适用于内核堆栈 不适用于用户空间堆栈 当中断使能时 内核代码始终需要保持 ESP 有效 并假设
  • Django Heroku 没有名为“我的应用程序名称”的模块

    我正在尝试将我的第一个 Django 应用程序部署到 Heroku 我能够迁移数据库并创建超级用户 但现在我陷入了困境 2018 05 19 22 51 01 0000 4 INFO Listening at http 0 0 0 0 31
  • 避免在 JqGrid 工具栏中搜索特殊字符

    我已经使用 Asp Net 成功构建了 Jq GRid 它具有除 避免工具栏搜索中的 Spl 字符 之外的所有必需功能 我试图找到工具栏的 ID 但没有成功 谁能告诉我如何使用正则表达式之类的东西来拒绝输入某些 Spl 字符 例如 和其他一
  • 使用该线上的点找到垂直线

    我有一条线 P1 P2 以及该线上的一个点 中点 我可以使用什么方程找到穿过中点的直线 P1 P2 的垂直线 标有 的点未知 我不想使用角度 只想使用给出的 3 个点 P1 P2 中点 线P1 P2可以具有任何方向 角度 提前致谢 定义向量
  • 如何从另一个jar运行一个jar文件

    我有一个已使用 L4J 转换为 exe 的 jar 文件 以及 appdata 中的另一个 jar 文件 有两个文件的原因是我需要一个更新机制 我的问题 如何在桌面上运行 exe 文件 然后从中加载 appdata 中的 jar 你可以使用
  • Python获取文件名并更改并将其保存在变量中

    我正在关注需要一个最小的 Django 文件上传示例 在view py中有 newdoc Document docfile request FILES docfile newdoc save 假设我上传文件xyz csv这使得 newdoc
  • C# 中的 UTF8(引用的可打印)转换问题

    我正在从邮箱中提取法语电子邮件 并且这些电子邮件包含重音符号 我相信它使用UTF8编码 我尝试过在互联网上找到的不同 UTF8 转换方法 但均不成功 例如 在 C 中 如何将 Montr C3 A9al 转换为 Montr al 编辑 此外
  • 我的 ViewBag 无法工作有什么原因吗?

    我有以下ActionResult in a controller你可以看到我在ViewBag如果成功的话 然后在View如果它不为空 它应该输出该消息 但是 我无法显示该消息 也没有看到问题所在 HttpPost public Action
  • C# 从 gridview asp net 中的下拉列表中获取选定值

    每当网格视图中的下拉列表的值发生更改时 如何更改文本框的值 页面加载时 文本框显示所选值 但是当我更改下拉列表的选择时 文本框值不会更改 代码如下
  • 在 android level 17 (4.2.2) 之前将数据传递给 webview 中的 javascript

    我正在开发一些从 android 调用的 javascript 图表库 了解 JavascriptInterface 仅在 Android API Level 17 4 2 2 之后可用 http developer android com
  • Eclipse 查找哪些文件引用了这个 jar

    我们有很多罐子 这些罐子是多年来添加到项目中的 但它们的使用情况尚未在任何地方记录 我想找出 java 或 jsp 文件中 jar 中任何类的引用 现在 对于我们的新 jars 我们没有这个问题 因为我们使用 Maven 它可以帮助我们更好
  • Excel VBA - 应用自动过滤器并按特定颜色排序

    我有一个自动过滤的数据范围 自动过滤器是由以下 VB 代码创建的 Sub Colour filter Range A4 Select Range Selection Selection End xlToRight Select Range