Excel·VBA单元格区域数据对比差异标记颜色

news/2024/12/23 7:40:12/

之前的一篇博客《Excel·VBA单元格重复值标记颜色》,是对重复的整行标记颜色
而本文是按行对比2个单元格区域的数据,并对有差异的区域(一个单元格区域有的,而另一个单元格区域没有的)标记颜色,且只要存在任意1个字符不同的,则标记颜色

单元格区域数据对比标色

代码写为自定义函数使用更为方便,并使用 Union 方法在每个单元格区域判断结束后统一标色

Function 单元格区域数据对比标色(ByVal rng1 As Range, ByVal rng2 As Range)'2个单元格区域数据按行对比,1个区域中有另1个区域中无则标色,每行中任意1个字符不同则标色Dim dict1 As Object, dict2 As Object, delimiter$, color_index&, i&, j&, temp$, k, color_rng As RangeSet dict1 = CreateObject("scripting.dictionary"): delimiter = Chr(28)Set dict2 = CreateObject("scripting.dictionary"): color_index = 6  '标记黄色For i = 1 To rng1.Rows.Count  'rng1写入字典temp = ""For j = 1 To rng1.Columns.Counttemp = temp & delimiter & rng1.Cells(i, j).ValueNextIf Not dict1.Exists(temp) ThenSet dict1(temp) = rng1.Rows(i)ElseSet dict1(temp) = Union(dict1(temp), rng1.Rows(i))End IfNextFor i = 1 To rng2.Rows.Count  'rng2写入字典temp = ""For j = 1 To rng2.Columns.Counttemp = temp & delimiter & rng2.Cells(i, j).ValueNextIf Not dict2.Exists(temp) ThenSet dict2(temp) = rng2.Rows(i)ElseSet dict2(temp) = Union(dict2(temp), rng2.Rows(i))End IfNextFor Each k In dict1.keys  '遍历dict1,判断所有键在dict2中是否存在,不存在则写入标色区域color_rngIf Not dict2.Exists(k) ThenIf color_rng Is Nothing ThenSet color_rng = dict1(k)ElseSet color_rng = Union(color_rng, dict1(k))End IfEnd IfNext'Union无法跨工作表使用,故先对color_rng标色1次If Not color_rng Is Nothing Then color_rng.Interior.ColorIndex = color_index: Set color_rng = NothingFor Each k In dict2.keys  '遍历dict2,判断所有键在dict1中是否存在If Not dict1.Exists(k) ThenIf color_rng Is Nothing ThenSet color_rng = dict2(k)ElseSet color_rng = Union(color_rng, dict2(k))End IfEnd IfNextIf Not color_rng Is Nothing Then color_rng.Interior.ColorIndex = color_index: Set color_rng = NothingDebug.Print "单元格区域数据对比标色,完成"
End Function

举例

Sub 测试()Dim rng1 As Range, rng2 As RangeSet rng1 = Worksheets("表1").[a1].CurrentRegionSet rng2 = Worksheets("表2").[a1].CurrentRegiona = 单元格区域数据对比标色(rng1, rng2)
End Sub

在这里插入图片描述
对比差异并标记黄色
在这里插入图片描述


http://www.ppmy.cn/news/1167612.html

相关文章

医疗领域的数字化浪潮:互联网医院平台的关键作用

数字化浪潮正在迅速改变医疗领域的方式和效率。互联网医院平台作为数字化医疗的关键元素,正在为医疗行业带来巨大的变革。本文将探讨互联网医院平台的关键作用,并提供一个示例,使用Python编写一个简单的医疗预约系统。 互联网医院平台的关键…

PTrade财务数据获取函数的问题

前文介绍了PTrade的get_fundamentals函数,可以用于获取股票的财务数据。但在实际应用中,会遇到如下的问题。 前文我们通过将回测时间设置为2023-05-05进行回测调用get_fundamentals,得到如下查询结果: secu_codepubl_dateend_da…

Retrofit+Flow网络请求与Android网络请求的演变

Retrofit网络请求我想大家都不陌生,今天我就来梳理一下技术是如何一步一步进步,逼格是如何一步一步变高的。 Retrofit使用方式演变 萌新 刚开始接触Retrofit的时候是从okhttp和volley以及android系统源码里面那个HttpPost与HttpGet切换过来的。 publ…

shell_38.Linux读取脚本名

读取脚本名 (1)示例 $ cat positional0.sh #!/bin/bash # Handling the $0 command-line parameter # echo This script name is $0. exit $ $ bash positional0.sh This script name is positional0.sh. $ (2)如果使用另一个命令来运行 shell 脚本,则命令…

2023年中国预缩机产量、需求量及市场规模分析[图]

预缩机是一种用于压缩气体的机械设备,通过减小气体的体积,增加气体的压力。预缩机通常由压缩机、电机、冷却系统和控制系统等组成,广泛应用于空调、制冷、工业生产等领域。 预缩机行业分类 资料来源:共研产业咨询(共研…

前端数据可视化之【Echarts下载使用】

目录 🌟下载🌟浏览器引入🌟模块化引入 🌟使用🌟基本使用步骤 🌟绘制一个简单的图表🌟写在最后 🌟下载 🌟浏览器引入 官网下载界面:官方网站 或 Echarts中文…

冒泡排序、插入排序、选择排序和快速排序的原理

下面是对冒泡排序、插入排序、选择排序和快速排序的原理的简要解释: 冒泡排序(Bubble Sort):冒泡排序是一种简单的排序算法。它通过多次迭代比较相邻的元素,并交换它们的位置,使得较大(或较小&…

2023年最新版CorelDraw(cdr)软件下载安装教程

CorelDRAW 2023是Corel公司推出的最新版本的图形设计软件。CorelDRAW是一款功能强大的矢量图形编辑工具,被广泛用于图形设计、插图、页面布局、照片编辑和网页设计等领域。 1. 新增的设计工具:CorelDRAW 2023引入了一些全新的设计工具,使用户…