如何对选定列不同的内容着不同颜色

我们要对一个员工消费表中不同的员工着不同的颜色,要怎么做呢?

首先我们可以对姓名进行排序,然后悲催地发现,每个人出现的记录次数并不相同,所以不能用行号取余实现,那么我们可以添加辅助列,比如我这里用的是D列,然后在数据开始的行上边添加两行分别标记 0 ,1(0,1只是个标签,如果不喜欢标记成阿猫阿狗也可以)

然后在D3处填入公式

=IF(A3=A2,D2,OFFSET(D2,-COUNTIF($A$2:$A3,A2),0))

857b2269902d4895be55cad72756ac19.png

 

 

 

然后我们惊奇地发现,相同的姓名会被赋予一个相同的标记,而相邻的两个不同姓名标记又不一样

853d2a21111e4ed09b488ef428c31cb8.png

 

 

那么,我们找到开始---->条件格式---->新建规则,选择使用公式确定要设置格式的单元格

在第一个跳出界面的范围框中填入 =$D3=1,格式设置为 图案 -->淡蓝色,确定,再次选择开始---->条件格式---->管理规则,将”应用于”修改为你要操作的所有区域,比如我这里是 B3到K1751则填入 $B$3:$K$1751

f2c2346ab03a4d76b738b29bc5eabeb0.png

 

845755f6685c40fa94b8ae191b6e571b.png

 

 

确定,然后我们惊奇地发现,不同的姓名被着上不同的颜色了。

2f8a1b67aba9427eb78c560f87afab53.png

 

 

那么,辅助列是否可以删除呢,这是不行的,因为规则要依赖辅助列,我们在查看或是打印的时候,如果不希望辅助列出现可以隐藏即可,如果不希望列出现隔断的情况,可以找一个尽量靠后的列做辅助列。

为什么条件格式规则管理器的规则中公式是$D3=1而不是整列$D:D呢?其实这个就是计算机语言规则,$D3本身就是可变的,如果我们设置为$D:D,他反倒会以为在这一个小小的范围内,要求整列都是1,卡bug呢

那么,我们修改某一条记录的员工姓名,需不需要重新做一次呢?这里是不需要的,毕竟公式是动态的,如下,将第三列的姓名改成了东哥:

c10cdb00cd424936a89ba4a660e4a1bc.png

 

 

我们发现效果还是和我们所想的一样样的

 

我们来解析一下这个公式

=IF(A3=A2,D2,OFFSET(D2,-COUNTIF($A$2:$A3,A2),0))

首先我们要明白这里边包含的三个公式的基本释义

IF:如果**则**。OFFSET:按要求偏移。COUNTIF:统计出现次数

分解开始:

=IF(A3=A2,D2,***)

这层意思就是说,如果A3=A2,则D列填充D2的值(1),如果A3!=A2,则填充OFFSET(D2,-COUNTIF($A$2:$A3,A2),0))的值,然后我们再看

OFFSET(D2,-COUNTIF($A$2:$A3,A2),0))

这层意思是说,从D2开始偏移,偏移量为行偏移-COUNTIF($A$2:$A3,A2),列偏移0

那么我们再看

COUNTIF($A$2:$A3,A2)

这层意思是说统计$A$2:$A3这个区域范围出现A2的次数

那么我们组合起来看就是:

如果A(n)列等于A(n-1)列的值,则填充D2数据(1),如何A(n)列不等于A(n-1)列的值,则以D(n)列的值开始偏移,偏移量为从A2行到该行出现A(n-1)行的次数取反(取对应的负值)

我们以第三列到第九列为例讲该公式如何运行(以第一个着色表格为例):

由于A3不等于A2,则D3的值是从D2偏移,而$A$2:$A2范围内出现A2的次数是1次,所以偏移量为-1,负数说明是向上偏移,偏移后的值为D1的数据0

A4等于A3,则进入IF后返回值是D3,还是为0,以此类推

由于A8不等于A7,则D8的值是从D7偏移,而$A$2:$A8范围内出现A7的次数是5次(从第三行到第七行),所以偏移量为-5,负数说明是向上偏移,偏移后的值为D2的数据1

A9等于A8,则进入IF后返回值是D8,还是为1,以此类推

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值