在Excel中如何快速筛选非特定颜色

Excel中的自动筛选是个非常强大的工具,不仅可以筛选内容,而且可以筛选颜色,例如筛选A列红色单元格。但是有时希望筛选除了红色之外的单元格(下图右侧所示),其他单元格的填充色不固定,有几种颜色也不固定,那么内置的自动筛选就无能为力,使用VBA还是可以实现的。

在这里插入图片描述

示例代码如下。

Sub Demo()
    Dim helpRng As Range, visRng As Range
    Dim lastRow As Long, oSht As Worksheet
    Set oSht = Sheets("Sheet1")
    If oSht.AutoFilterMode Then oSht.AutoFilterMode = False
    lastRow = oSht.Cells(oSht.Rows.Count, 1).End(xlUp).Row
    With oSht.Range("A1:E" & lastRow)
        .AutoFilter Field:=1, Criteria1:=RGB(255, 0, 0), Operator:=xlFilterCellColor
        Set helpRng = .Columns(.Columns.Count).Offset(, 1)
        helpRng.EntireColumn.Hidden = False
        On Error Resume Next
        Set visRng = helpRng.SpecialCells(xlCellTypeVisible)
        On Error GoTo 0
        If Not visRng Is Nothing Then
            oSht.AutoFilterMode = False
            helpRng.Clear
            visRng.Value = 1
            helpRng.AutoFilter Field:=1, Criteria1:=""
            helpRng.EntireColumn.Hidden = True
        End If
    End With
End Sub

【代码解析】
第4行代码获取工作表对象。
第5行代码如何工作表已经启用自动筛选,请取消当前的自动筛选。
第6行代码获取A列最后数据所在行号。
第7行代码设置表格范围,如果已经创建Excel表格,那么可以直接使用ListObject对象。
第8行代码在第1列应用自动筛选,筛选颜色为红色。
第9行代码在表格右侧添加辅助列。
第10行代码确保辅助类处于显示状态(没有被隐藏),否则第12行无法获取相应的单元格。
第11行代码忽略运行时错误。
第12行代码获取辅助列的可见单元格。
第13行代码恢复系统错误处理机制。
第14行代码如果可见单元格不为空,说明具备红色单元格。
第14行代码取消自动筛选。
第16行代码清空辅助列。
第17行代码将可见单元格(即红色所在行)赋值为1。
第18行代码启用自动筛选,筛选辅助列为空的单元格(即:非红色所在行)。
第19行代码隐藏辅助列。


希望大家不用谈辅助列色变,认为使用辅助类的解决方案,都是很弱智的实现方法,实际上合理使用辅助列,可以更好的利用Excel内置功能,在数据量比较大的应用场景中,这通常比单纯的VBA实现方案更高效,总之,效率为王,英雄不问出身。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/904050.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

llama.cpp基础知识与原理导读

llama.cpp 是一个轻量化的 C++ 实现,专注于 Meta 的 LLaMA 模型的推理和部署。该项目致力于在不依赖庞大的深度学习框架(如 PyTorch、TensorFlow 等)的情况下,实现对 LLaMA 模型的高效运行,特别是在资源受限的设备上(如个人电脑和手机)。以下是 llama.cpp 的主要工作原理…

【Android14 ShellTransitions】(八)播放动画

书接上回,话说当WMCore部分走到了Transition.onTransactionReady,计算完参与动画的目标,构建出TransitionInfo后,接下来就把这个包含了动画参与者的TransitionInfo发给了WMShell,然后就该播放动画了,这部分…

ELK + Filebeat + Spring Boot:日志分析入门与实践(二)

目录 一、环境 1.1 ELKF环境 1.2 版本 1.3 流程 二、Filebeat安装 2.1 安装 2.2 新增配置采集日志 三、logstash 配置 3.1 配置输出日志到es 3.2 Grok 日志格式解析 3.2 启动 logstash ​3.3 启动项目查看索引 一、环境 1.1 ELKF环境 springboot项目:w…

C#实现word和pdf格式互转

1、word转pdf 使用nuget: Microsoft.Office.Interop.Word winform页面: 后端代码: //using Spire.Doc; //using Spire.Pdf; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using Sy…

成都睿明智科技有限公司抖音电商服务的领航者

在这个短视频风起云涌的时代,抖音电商以其独特的魅力迅速崛起,成为无数商家争夺流量与销量的新战场。在这片红海之中,如何脱颖而出,实现销售额的飞跃?今天,就让我们一同走进成都睿明智科技有限公司&#xf…

力扣hot100-->递归/回溯

目录 递归/回溯 1. 17. 电话号码的字母组合 2. 22. 括号生成 3. 39. 组合总和 4. 46. 全排列 5. 78. 子集 递归/回溯 1. 17. 电话号码的字母组合 中等 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到…

快速遍历包含合并单元格的Word表格

Word中的合并表格如下,现在需要根据子类(例如:果汁)查找对应的品类,如果这是Excel表格,那么即使包含合并单元格,也很容易处理,但是使用Word VBA进行查找,就需要一些技巧。…

js 获取当前时间与前一个月时间

// 获取当前时间的毫秒数 var currentTimeMillis new Date().getTime();// 获取前一个月的Date对象 var dateLastMonth new Date(); dateLastMonth.setMonth(dateLastMonth.getMonth() - 1);// 获取前一个月的毫秒数 var timeMillisLastMonth dateLastMonth.getTime();conso…

C++之多态的深度剖析

目录 前言 1.多态的概念 2.多态的定义及实现 2.1多态的构成条件 2.1.1重要条件 2.1.2 虚函数 2.1.3 虚函数的重写/覆盖 2.1.4 选择题 2.1.5 虚函数其他知识 协变(了解) 析构函数的重写 override 和 final关键字 3. 重载,重写&…

【linux网络编程】| socket套接字 | 实现UDP协议聊天室

前言:本节内容将带友友们实现一个UDP协议的聊天室。 主要原理是客户端发送数据给服务端。 服务端将数据再转发给所有链接服务端的客户端。 所以, 我们主要就是要实现客户端以及服务端的逻辑代码。 那么, 接下来开始我们的学习吧。 ps:本节内容…

【PTA】4-2 树的同构【数据结构】

给定两棵树 T1​ 和 T2​。如果 T1​ 可以通过若干次左右孩子互换就变成 T2​,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。 图一…

「Mac畅玩鸿蒙与硬件13」鸿蒙UI组件篇3 - TextInput 组件获取用户输入

在鸿蒙应用开发中,TextInput 组件用于接收用户输入,适用于文本、密码等多种输入类型。本文详细介绍鸿蒙 TextInput 组件的使用方法,包括输入限制、样式设置、事件监听及搜索框应用,帮助你灵活处理鸿蒙应用中的用户输入。 关键词 TextInput 组件用户输入输入限制事件监听搜索…

单元测试详解

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 为什么需要单元测试? 从产品角度而言,常规的功能测试、系统测试都是站在产品局部或全局功能进行测试,能够很好地与用户的需…

如何从PPT中导出600dpi的高清图

Step1. 修改PPT注册表 具体过程,参见如下链接:修改ppt注册表,导出高分辨率图片 Step2. 打开PPT,找到自己想要保存的图,选中图像,查看图像尺寸并记录 Step3. 重新新建一个PPT,并根据记录的图片…

「Mac畅玩鸿蒙与硬件7」鸿蒙开发环境配置篇7 - 使用命令行工具和本地模拟器管理项目

本篇将讲解在 macOS 上配置 HarmonyOS 开发环境的流程,聚焦 hvigorw 命令行工具的使用。我们将以创建 HelloWorld 项目为例,演示使用 hvigorw 进行项目构建、清理操作,并通过 DevEco Studio 的本地模拟器进行预览,帮助提升项目开发…

Linux基础—基础命令及相关知识5(ubuntu网络配置)

网络的配置方法 centos网络配置 centos的网卡位置 /etc/sysconfig/network-scripts/ifcfg-ens33(centos网卡文件) bootproto表示获得IP地址的方式是静态的还是动态 onboot表示启动系统时是否激活该网络接口 设置IP地址,子网掩码,网关,dns…

LabVIEW开发的控制阀监控与维护系统

LabVIEW开发一套自动测试软件,用于控制阀的实时监控、数据采集、维护管理以及报警通知。此系统的目标是通过便捷的操作界面、可靠的通信接口和高效的数据管理,为工厂设备管理提供全面的支持。 1. 项目需求 目标是实现一个控制阀管理系统,能够…

第7章 利用CSS和多媒体美化页面作业

2.用表格布局页面&#xff0c;利用CSS技术&#xff0c;及添加多媒体&#xff0c;制作并美化“心灵之音”页面。 浏览效果如下&#xff1a; 实例代码如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>心灵…

Python中的数据可视化:Matplotlib基础与高级技巧

Python中的数据可视化&#xff1a;Matplotlib基础与高级技巧 数据可视化是数据分析和数据科学中不可或缺的一部分。通过图表&#xff0c;我们可以更直观地观察数据的分布和趋势。Matplotlib作为Python最基础、也是最广泛使用的绘图库之一&#xff0c;不仅支持多种常用图表&…

‘cmd‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。

报错描述&#xff1a; 我在使用python执行一个spark任务时&#xff0c;一直报如下错误&#xff0c;检查电脑上所有的环境变量后发现都配置正确&#xff0c;但还是一直报cmd 不是内部或外部命令&#xff0c;也不是可运行的程序这个错误&#xff0c;如果你也有这样的情况&#x…