使用VBA创建Excel条件格式

news2024/9/24 13:14:51

实例需求:数据总行数不确定,现需要将Category区域(即C列到J列)中第3行开始的区域设置条件格式,规则如下:

  • 只对部分指定单元格应用色阶条件格式(3色)
  • 指定单元格应满足条件:该行B列+0.5等于该列第2行的值(Category),例如对于第6行,B6+0.5值为3,对应Category为3的列为E列,因此E6单元格应用色阶条件格式,该行其他单元格无填充色

效果如下所示。

在这里插入图片描述

首先想到的实现思路可能是:根据B列的值定位每行需要设置色阶的单元格,使用Union组合为一个Range对象,然后设置色阶条件格式,这种方式可以实现,但是如果用户修改了B列数据,那么需要重现运行代码才能获取正确的条件格式。

下面用另外一种更通用的方法来实现这个需求,为整个数据区域创建两个条件格式规则

  • 第一个规则筛选无需应用色阶条件格式的单元格,设置格式为无格式,并且启用“如果为真则停止”,避免受第二个规则的影响
  • 第二个规则应用色阶条件格式

示例代码如下。

Sub HeatMapColorScale()
    Dim objSht As Worksheet
    Dim rngData As Range
    Dim lastRow As Long, i As Long
    Dim objFC As FormatCondition
    Set objSht = ThisWorkbook.Sheets("CSDN")
    With objSht.Cells
        For i = .FormatConditions.Count To 1 Step -1
            .FormatConditions(i).Delete
        Next
    End With
    lastRow = objSht.Cells(objSht.Rows.Count, "A").End(xlUp).Row
    Set rngData = objSht.Range("C3:I" & lastRow)
    With rngData.FormatConditions
        .Add Type:=xlExpression, Formula1:="=NOT($B3+0.5=C$2)"
        .Item(1).StopIfTrue = True
        .AddColorScale ColorScaleType:=3
    End With
End Sub

【代码解析】
第6行代码获取工作表对象。
第7~10行代码循环遍历删除工作表中的全部条件格式,删除对象时应使用倒序循环,否则可能会出现遗漏或者运行时错误。
第12行代码获取最后数据行的行号。
第15行代码添加条件格式,使得无关单元格不会被填充颜色。
第16行代码设置“如果为真则停止”,即后续条件格式不再有效。
第17行代码添加色阶条件格式。

运行代码创建的条件格式如下所示。

在这里插入图片描述

扩展知识:

如果工作表中已经存在条件格式(例如本示例中的色阶),使用代码添加添加新的条件格式,新规则将被添加至原规则之下,那么可以使用如下代码调整规则次序。

   With rngData.FormatConditions
       .Add Type:=xlExpression, Formula1:="=NOT($B3+0.5=C$2)"
   End With
   rngData.FormatConditions(rngData.FormatConditions.Count).SetFirstPriority
   rngData.FormatConditions(1).StopIfTrue = True

微软文档:

FormatCondition.StopIfTrue property (Excel)

FormatCondition.SetFirstPriority method (Excel)

Range.FormatConditions property (Excel)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用cpolar内网穿透工具实现公网SSH远程访问Deepin

文章目录 前言1. 开启SSH服务2. Deppin安装Cpolar3. 配置ssh公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 前言 Deepin操作系统是一个基于Debian的Linux操作系统,专注于使用者对日常办公、学习、生活和娱乐的操作体验的极致&#xff0…

一文讲透Python机器学习决策树算法的基本概念与原理

1.决策树算法的基本特点与优势 决策树算法是一种有监督、非参数、简单、高效的机器学习算法。相对于非监督式学习方法,决策树算法由于充分利用了响应变量的信息,因此能够很好地克服噪声问题,在分类及预测方面效果更佳。决策树的决策边界为矩…

win10打开或关闭系统图标界面网络显示灰色

1、右击任务栏,选择任务管理器,或同时按下键盘上的“CtrlShiftEsc”组合键打开任务管理器; 2、在任务管理器【进程】选卡下找到【资源管理器】,单击右键,选择【重新启动】即可。 等待桌面和任务栏全部消失&#xff0c…

某60区块链安全之JOP实战一学习记录

区块链安全 文章目录 区块链安全Jump Oriented Programming实战一实验目的实验环境实验工具实验原理实验内容Jump Oriented Programming实战一 实验步骤分析合约源代码漏洞Jump Oriented Programming实战一 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约中中Ju…

《数据库系统概论》学习笔记——王珊 萨师煊

第一章 绪论 一、数据库系统概述 1.数据库的4个基本概念 (1)数据 描述事物的符号记录称为数据 (2)数据库 存放数据的仓库 (3)数据库管理系统 主要功能: (1)数据定…

RabbitMQ的消息发送和接收机制

所有 MQ 产品从模型抽象上来说都是一样的过程: 消费者(consumer)订阅某个队列。生产者(producer)创建消息,然后发布到队列(queue)中,最后将消息发送到监听的消费者。 上…

【上海大学数字逻辑实验报告】四、组合电路(三)

一、 实验目的 掌握多路选择器74LS151的原理。掌握译码器74LS138的原理。学会在Quartus II上使用多路选择74LS151设计电路。学会在Quartus II上使用译码器74LS138设计电路。 二、 实验原理 多路选择器又称数据选择器或多路开关,它是一种多路输入单路输出的组合逻…

开启三层交换机DHCP服务

二层交换机上不需要配置任何东西,只需要在pc机上开启dhcp服务,配置好LSW1后就可以自动获取到IP地址。 sys Enter system view, return user view with CtrlZ. [Huawei]sys sw1 [sw1]dhcp enable Info: The operation may take a few seconds. Please wai…

腾讯云轻量应用服务器怎么安装BT宝塔面板?

腾讯云轻量应用服务器宝塔面板怎么用?轻量应用服务器如何安装宝塔面板?在镜像中选择宝塔Linux面板腾讯云专享版,在轻量服务器防火墙中开启8888端口号,然后远程连接到轻量服务器执行宝塔面板账号密码查询命令,最后登录和…

关于前端学习的思考-vertical-align的用法

先摆结论:vertical-align这里的top线,bottom线,middle线,baseline线是由最大宽度和最大高度的行内元素或行内块元素决定的。 按照惯例,先摆三个行内元素。 1、改变第一个盒子,vertical-align:to…

Java数据结构之《快速排序》(难度系数85)

一、前言: 这是怀化学院的:Java数据结构中的一道难度中等(偏难理解)的一道编程题(此方法为博主自己研究,问题基本解决,若有bug欢迎下方评论提出意见,我会第一时间改进代码,谢谢!) 后面其他编程题…

网络层之无分类编址CIDR(内涵计算例题)

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

leetcode:对称二叉树

题目描述 题目链接:101. 对称二叉树 - 力扣(LeetCode) 题目分析 题目中说至少存在一个节点,所以我们只需要对比左右子树 写一个子函数对比左右子树:用递归的思路,左子树的左子树和右子树的右子树对比&…

苹果电脑录屏神器,让你的录制更加轻松

“苹果电脑可以录屏吗?老师布置了一份作业,需要用到视频作为材料,现在我找到素材了,但是不知道怎么录制下来,非常头疼,大家知道苹果电脑怎么使用录屏功能吗?” 苹果电脑一直以其出色的性能和简…

6.17验证二叉树(LC98-M)

算法: 中序遍历下,输出的二叉搜索树节点的数值是有序序列。 有了这个特性,验证二叉搜索树,就相当于变成了判断一个序列是不是递增的了。 具体地:中序遍历时,判断当前节点是否大于中序遍历的前一个节点&a…

IntelliJ IDEA 智能(AI)编码工具插件

文章目录 通义灵码-阿里CodeGeeX-清华大学智谱AIBitoAmazon CodeWhisperer-亚马逊GitHub Copilot - 买不起CodeiumAIXcoder 仅仅自动生成单元测试功能 TestMe插件(免费)仅仅是模板填充,不智能。 Squaretest插件(收费)…

奇客数据恢复评论:优点、缺点和个人的结论

小型、中型和大型公司以数字格式存储大量信息。数据范围包括患者或客户信息、工资数据、联系人列表、电子邮件通信、有关个人工作和项目的各种数据以及电子表格。丢失这些数据和文件对于任何公司来说都是灾难性的。恢复这些数据对于业务的正常功能来说非常重要。 由于存在许多…

任务管理器快捷键分享!这些知识很有用!

“我刚学习使用电脑没多久,想问问大家任务管理器这个功能有什么用处呀?在使用任务管理器时有什么快捷键能快速进入吗?感谢解答!” 在日常使用电脑的过程中,我们经常需要打开任务管理器来进行一些操作。而掌握任务管理器…

uniapp 之 短信验证码登录

一、需求 输入手机号码&#xff0c;可以获取验证码。 二、实现效果 点击前&#xff1a; 点击后&#xff1a; 三、代码实现 <template><view class"login"><view class"infobox"><view class"item"><input type…

CCleaner2024电脑中文最新免费版5.66

CCleaner是一款小型&#xff0c;快速&#xff0c;专业的系统清理和隐私保护工具。没有最低内存或硬盘驱动器要求。可使电脑启动速度最高提速53%&#xff0c;不包含任何广告软件。不仅可以清除系统中的垃圾文件和使用者的历史记录和Cookie&#xff0c;更能删除保留在计算机的Coo…