设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3275|回复: 11
打印 上一主题 下一主题

归类填充颜色,不一样的填充不一样的底纹

[复制链接]
跳转到指定楼层
1#
发表于 2016-1-5 09:59:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
归类填充颜色,不一样的填充不一样的底纹

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2016-1-5 11:18:12 | 只看该作者
这个不需要VBA,条件格式就可以了
公式用:
  1. =MOD(INT(SUMPRODUCT(1/COUNTIF(A$3:A3,A$3:A3))),2)
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
3#
 楼主| 发表于 2016-1-5 13:04:32 | 只看该作者
pureshadow 发表于 2016-1-5 11:18
这个不需要VBA,条件格式就可以了
公式用:

谢谢你
但是,我还要做其它的一些操作,用VBA比较方便
4#
发表于 2016-1-5 16:22:25 | 只看该作者
本帖最后由 roych 于 2016-1-7 10:08 编辑

写得有点啰嗦,有时间再优化呗。
  1. Sub test()
  2.     Dim i As Long, j As Long
  3.     Dim k As Range, m As Range
  4.     '预填充
  5.     Set k = Sheet1.Range("A3")
  6.     k.Interior.Color = vbYellow
  7.     For j = 0 To 1
  8.         For i = 1 To Sheet1.Range("A2").End(xlDown).Row - 2
  9.             Set m = Sheet1.Range("A2").Offset(i, j)
  10.             '值相同则填充上一个单元格的颜色【即黄色】
  11.             If m.Value = k.Value Then
  12.                 m.Interior.Color = k.Interior.Color
  13.             Else
  14.                '如果单元格不同,则预填充绿色
  15.                 m.Interior.Color = RGB(0, 192, 0)
  16.                '如果跟上一个单元格颜色一致,则改为黄色
  17.                 If m.Interior.Color = k.Interior.Color Then
  18.                     m.Interior.Color = vbYellow
  19.                 End If
  20.             End If
  21.                 Set k = m
  22.         Next
  23.     Next
  24. End Sub
复制代码


详见附件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
5#
 楼主| 发表于 2016-1-6 17:15:17 | 只看该作者
roych 发表于 2016-1-5 16:22
写得有点啰嗦,有时间再优化呗。

详见附件。

谢谢您
代码测试了下,一直运行过程,颜色会一直改变
6#
发表于 2016-1-7 10:09:31 | 只看该作者
zhuangyongjin 发表于 2016-1-6 17:15
谢谢您
代码测试了下,一直运行过程,颜色会一直改变

附件已更新,请自行下载。

点击这里给我发消息

7#
发表于 2016-1-7 11:21:10 | 只看该作者
这个呢

  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. On Error Resume Next
  3. Cells.SpecialCells(xlCellTypeBlanks).Interior.Pattern = xlNone
  4. If Target = Target.Offset(-1, 0) Then
  5.     Target.Interior.Color = Target.Offset(-1, 0).Interior.Color
  6. Else
  7.     If Target.Offset(-1, 0).Interior.Color = 65535 Then
  8.         Target.Interior.Color = 5296274
  9.     Else
  10.         Target.Interior.Color = 65535
  11.     End If
  12. End If
  13. End Sub
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
8#
 楼主| 发表于 2016-1-8 07:38:13 | 只看该作者

谢谢您
测试了下,如果跳行录入数据,会出现相邻两行的数据不一样,但颜色一样
9#
 楼主| 发表于 2016-1-8 07:40:11 | 只看该作者
本帖最后由 zhuangyongjin 于 2016-1-8 07:49 编辑
roych 发表于 2016-1-7 10:09
附件已更新,请自行下载。

谢谢您,您的方法可行
不过,里面有一句代码我不理解                m.Interior.Color = RGB(0, 192, 0)
                If m.Interior.Color = k.Interior.Color Then   
                    m.Interior.Color = vbYellow
                End If当 m <>k时,单元格填充的是绿色。
然后,当单元格的颜色等于k的颜色,那么单元格的颜色就是黄色,但是k表示A3,本来就是黄色啊,那么这个条件If m.Interior.Color = k.Interior.Color 怎么会成立呢



10#
发表于 2016-1-8 08:43:19 | 只看该作者
zhuangyongjin 发表于 2016-1-8 07:40
谢谢您,您的方法可行
不过,里面有一句代码我不理解                m.Interior.Color = RGB(0, 192, 0 ...

请留意 set k=m
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-26 04:50 , Processed in 0.091180 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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