使用VBA创建Excel条件格式

实例需求:数据总行数不确定,现需要将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 WorksheetDim rngData As RangeDim lastRow As Long, i As LongDim objFC As FormatConditionSet objSht = ThisWorkbook.Sheets("CSDN")With objSht.CellsFor i = .FormatConditions.Count To 1 Step -1.FormatConditions(i).DeleteNextEnd WithlastRow = objSht.Cells(objSht.Rows.Count, "A").End(xlUp).RowSet 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:=3End With
End Sub

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

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

在这里插入图片描述

扩展知识:

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

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

微软文档:

FormatCondition.StopIfTrue property (Excel)

FormatCondition.SetFirstPriority method (Excel)

Range.FormatConditions property (Excel)

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

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

相关文章

移动距离

//偶数行需要反转,判断行数时,最后一个需要特判,可以用向上取整 //也可以把传入的值减一,下标从0开始 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main{static int w,m,n;static BufferedReader i…

大数据技术1:大数据发展简史

前言:学习大数据技术,知道会用已经够了,但是要想走得更远,应该了解它发展的来龙去脉,为何会有新的技术/工具的出现,相比老的技术有什么样的进步。 1、传统数据处理系统存在的问题 随着信息时代互联网技术爆…

JDBC简介及快速入门-黑马(P1)

黑马视频b站链接: 01-JDBC简介&快速入门_哔哩哔哩_bilibili 🐶一、JDBC 简介 JDBC 概念: JDBC 就是使用 Java 语言操作关系型数据库的一套 API。 全称(Java DataBase Connectivity) Java 数据库连接 JDBC 本质…

React 笔记 jsx

严格约定:React 组件必须以大写字母开头,而 HTML 标签则必须是小写字母。 React JSX JSX 是由 React 推广的 JavaScript 语法扩展。 用于表达组件的 特殊语法的 js 函数 要求标签必须闭合;返回的组件必须包裹在一个父标签内; …

鸿蒙4.0开发笔记之ArkTS语法基础之数据传递与共享详细讲解(十八)

文章目录 一、路由数据传递(router)1、路由数据传递定义2、路由数据传递使用方法3、数据传递两个页面的效果 二、页面间数据共享(EntryAbility)1、定义2、实现案例3、避坑点 三、数据传递练习 一、路由数据传递(router…

PaaS(平台即服务)——云计算服务模型(特点,应用场景,优点和缺点,示例)

PaaS(平台即服务)是云计算的一种服务模型,它提供了一个平台,允许客户开发、运行和管理应用程序,而无需建立和维护通常与这些过程相关的复杂基础设施。PaaS 是作为服务交付的一种方式,它提供了一套工具和服务…

网卡学习资料整理

GMAC网卡相关介绍与分析 https://www.cnblogs.com/forwards/p/17101438.html https://www.eefocus.com/article/1635234.html Linux Phy 驱动解析_linux phy驱动-CSDN博客 GMAC接口五篇 https://blog.csdn.net/dkmknjk/category_11837422.html 以太网扫盲(一&am…

麒麟V10服务器安装Apache+PHP

安装PHP yum install php yum install php-curl php-gd php-json php-mbstring php-exif php-mysqlnd php-pgsql php-pdo php-xml 配置文件 /etc/php.ini 修改参数 date.timezone Asia/Shanghai max_execution_time 60 memory_limit 1280M post_max_size 200M file_upload…

分布式和微服务区别

1.分布式 微服务和分布式的区别 1.将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上,各个业务模块之间通过接口进行数据交互。区别分布式的方式是根据不同机器不同业务。 2.分布式是否属于微服务? 答案是肯定的。微服务的意…

动手制作个人电脑对话机器人transformers+DialoGPT

简介:DialoGPT是一个对话模型,由微软基于GPT-2训练。由于DialoGPT在对话数据上进行了预训练,所以它比原始的GPT-2更擅长生成类似对话的文本。DialoGPT的主要目标是生成自然且连贯的对话,而不是在所有情况下都提供事实上的正确答案…

基于Spring、SpringMVC、MyBatis开发的游乐场管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring、SpringMVC、MyBatis开发的游…

ca单点登录

最近搞得单点登录碰到了很多问题,具体的问题有如下几个: ①如何获取usbkey的值 ②要实现的单点登录的方案 ③如何获取多个key的值,并进行选择登录 ④ie跳谷歌访问业务界面 注:最后将实现代码附上,希望对大家有所帮助 1…

Numpy数组的运算(第7讲)

Numpy数组的运算(第7讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

进制 + 原码,反码,补码

进制转换 整数部分 小数部分 原码 反码 补码 原码转补码: 左边和右边第一个1不变,中间取反。-0 除外。 计算机系统中数值一律用补码来存储的原因 其他 术语 进制表 进制数的表示 详细教程可转 爱编程的大丙

数学建模-数据新动能驱动中国经济增长的统计研究-基于数字产业化和产业数字化的经济贡献测度

数据新动能驱动中国经济增长的统计研究-基于数字产业化和产业数字化的经济贡献测度 整体求解过程概述(摘要) 伴随着数据要素化进程的不断加深,对于数据如何作用于经济发展,数据与其他要素结合产生的动能应该如何测度的研究愈发重要。本文将数据新动能分…

sql 条件统计,count+if+sum

1,前提 看同事写的sql语句时,觉得他写的这个countsumif的sql还挺新鲜, 学习记录下,感觉这个挺适合用来对历史数据做条件统计 2,count使用结果 select count(0);//1select count(1);//1select count(null);//0select…

机器人刚性碰撞任务的阻抗控制性能

问题描述 对于机器人刚性碰撞任务,阻抗控制可以有效地提高机器人的适应性和稳定性。 在刚性碰撞任务中,机器人在接触外部物体时需要快速适应并调整自身的运动轨迹和速度,以实现精确的操控和稳定的交互。阻抗控制可以通过调整机器人的阻抗参…

【Flink系列五】Checkpoint及Barrier原理

本章内容 一致性检查点从检查点恢复状态检查点实现算法-barrier保存点Savepoint状态后端(state backend) 本文先设置一个前提,流处理的数据都是可回放的(可以理解成消费的kafka的数据) 一致性检查点(che…

深度学习之注意力机制

注意力机制与外部记忆 注意力机制与记忆增强网络是相辅相成的,神经网络去从内存中或者外部记忆中选出与当前输入相关的内容时需要注意力机制,而在注意力机制的很多应用场景中,我们的外部信息也可以看作是一个外部的记忆 这是一个阅读理解任务…

Nodejs安装使用,nvm对Nodejs和npm版本控制

Nodejs 安装 使用: npm 是Nodejs的内置 包管理工具 下载长期支持版本Node.js 中文网Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全…