Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4128|回复: 11

[已解决]满足条件的单元格填充颜色

[复制链接]
发表于 2014-12-6 16:04 | 显示全部楼层 |阅读模式
本帖最后由 left369 于 2014-12-7 00:58 编辑

满足条件的单元格填充颜色  
最佳答案
2014-12-6 22:50
  1. Sub Macro1()
  2. Dim arr, d, i%, j&, h%, l&
  3. Application.ScreenUpdating = False
  4. Set d = CreateObject("scripting.dictionary")
  5. For i = 4 To 6
  6.     For j = 2 To 256 - i + 1
  7.         arr = Cells(22, j).Resize(2, 4)
  8.         For h = 1 To UBound(arr)
  9.             For l = 1 To UBound(arr, 2)
  10.                 d(arr(h, l)) = ""
  11.             Next
  12.         Next
  13.         If d.Count = i Then Cells(22, j).Resize(2, 4).Interior.ColorIndex = i
  14.         d.RemoveAll
  15.     Next
  16.     [a22:iv23].Copy Cells(22 + (i - 3) * 3, 1)
  17.     [a22:iv23].Interior.ColorIndex = xlNone
  18. Next
  19. Application.ScreenUpdating = True
  20. End Sub
复制代码

as2.zip

15.31 KB, 下载次数: 18

 楼主| 发表于 2014-12-6 19:53 | 显示全部楼层
回复

使用道具 举报

发表于 2014-12-6 21:21 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-12-6 21:23 | 显示全部楼层
爱疯 发表于 2014-12-6 21:21
看不懂说明

也就是连续列中,不同的个数不超过5个的,填充颜色。
回复

使用道具 举报

发表于 2014-12-6 21:26 | 显示全部楼层
黄色的19007 ,不是连续两个0吗,怎么也要填充?
回复

使用道具 举报

 楼主| 发表于 2014-12-6 21:49 | 显示全部楼层
爱疯 发表于 2014-12-6 21:26
黄色的19007 ,不是连续两个0吗,怎么也要填充?

比如黄色区域连续5列,但只有4个不同的数字,所以填充颜色。
回复

使用道具 举报

发表于 2014-12-6 21:52 | 显示全部楼层
不明白你的解释
你手动从B列到AH列填好,看看?
回复

使用道具 举报

 楼主| 发表于 2014-12-6 21:59 | 显示全部楼层
爱疯 发表于 2014-12-6 21:52
不明白你的解释
你手动从B列到AH列填好,看看?

也就是动态查询到某一区域,满足只有4个或者5个不同的数字,这一区域填充颜色
回复

使用道具 举报

 楼主| 发表于 2014-12-6 22:01 | 显示全部楼层
爱疯 发表于 2014-12-6 21:52
不明白你的解释
你手动从B列到AH列填好,看看?

这个区域是连续的列且必须有4列以上。比如黄色区域有5列(超过4列),且这一区域只有4个不同的数字(0,1,7,9)。则填充颜色。
回复

使用道具 举报

发表于 2014-12-6 22:50 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. Dim arr, d, i%, j&, h%, l&
  3. Application.ScreenUpdating = False
  4. Set d = CreateObject("scripting.dictionary")
  5. For i = 4 To 6
  6.     For j = 2 To 256 - i + 1
  7.         arr = Cells(22, j).Resize(2, 4)
  8.         For h = 1 To UBound(arr)
  9.             For l = 1 To UBound(arr, 2)
  10.                 d(arr(h, l)) = ""
  11.             Next
  12.         Next
  13.         If d.Count = i Then Cells(22, j).Resize(2, 4).Interior.ColorIndex = i
  14.         d.RemoveAll
  15.     Next
  16.     [a22:iv23].Copy Cells(22 + (i - 3) * 3, 1)
  17.     [a22:iv23].Interior.ColorIndex = xlNone
  18. Next
  19. Application.ScreenUpdating = True
  20. End Sub
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 15:51 , Processed in 1.102271 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表