Excel 如何用VBA写A列中某个单元格与项中相同值自动填充颜色,如下图表示。

如题所述

你好!楼主想要的VBA程序代码,其程序代码如下:

Sub ColorInset()

Dim i1, i2, i3

On Error Resume Next '忽略运行过程中可能出现的错误

Set mysheet1 = ThisWorkbook.Worksheets("Sheet1") '定义工作表


For i1 = 2 To 1000  '从第2行到1000行

 If mysheet1.Cells(i1, 1) <> "" Then  '如果A列单元格不是空白,则

  For i2 = 2 To 6  '从第2列到第6列

   If mysheet1.Cells(i1, 1) = mysheet1.Cells(i1, i2) Then '如果两个单元格的内容相同

    mysheet1.Cells(i1, 1).Interior.Color = RGB(255, 255, 0) '填充黄颜色

    mysheet1.Cells(i1, i2).Interior.Color = RGB(255, 255, 0)

   End If

  Next

 End If

Next


End Sub

程序运行之后的结果如下:

追问

你好!我把代码复制进去了,按运行键可以运行,但不按时,单元格不能自动标识颜色,是什么原因,是我这边那里出的问题。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-13
先要去重数据到某列,
然后引用这个列,
条件格式 选择不同的颜色追问

请你帮忙写一个。

第2个回答  2019-09-13
我觉得这个用调教格式轻松就可以实现,为何一定要用VBA呢?追问

方便做一个看看,方法不怕多,多学习一下。

追答

选中你要设置格式的区域(A2:F5),条件格式-突出显示单元格规则-其他规则-使用公式确定

输入=$A2=A2,格式设置为你要的格式

追问

首先,感谢。我试了是可以,但有个不好的现象,当单元格为空时,全是底纹颜色,如果能做到不输入数据时是原始颜色就好了,然后条件满足后再上颜色,我想问一下=$A2=A2 是怎么解释。

追答

前面那个$A2表示固定与A列匹配,行号动态变化;后面的A2表示要设置格式的区域里面的参数,相对位置,即A2与$A2比,A3与$A3比。。。B2与$A2比,C2与$A2比。。。
要去除空值的话改为=and($A2=A2,A2"")

追问

A列还是存在有底色,其它没有了。同时能把A列底色除掉吗

追答

=and($A2=A2,A2"",countif($A2:$F2,$A2)>1)

追问

你好!你试一下,是没有底色了,符合条件时,底色标注的是上行的,而不是本行。

追答

你要根据你的数据区域修改对应的行列坐标值哦
你的数据区域和提问中的一样吗

追问

    我刚才又试一下,选择区域A2:F5是可以的。

    因为我想把区域范围放大点,刚才我直接选择A拉到F区域时,当条件满足时颜色标示在上一行。我以为选择区域不影响,为什么这样选区域会不行的。

追答

里面的每一个参数都是根据要设置格式的区域来选择的,区域变变了参数要跟着变,但是相对位置没有变
$A2、A2是取得区域第一行第一列的值,
$A2:$F2是区域的第一行(整行)

追问

好的,感谢。=and($A2=A2,A2"",countif($A2:$F2,$A2)>1)能说明一下吗

追答

$A2=A2,每一个值与第一列、本行比较
A2每一个值与空值比较
countif()每一行第一个值,在本行是否有相同值

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网