ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3298|回复: 9

[已解决] 如何人excel一列数据中排序后让不同数据设置为交替的底纹颜色

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-9-5 00:32 | 显示全部楼层 |阅读模式
本帖最后由 痛痛痛痛 于 2018-9-5 21:15 编辑

假设有原始数据如下:户号已经排序,要对户号列进行操作,使之该列不同的户号分别以绿蓝底色交替出现。因为一个户号对应一个家庭,家庭人数有几人,该列的户号将出现几次。 或者不同的户号只设置一种颜色,如果能将这一行设置为相应的底纹更好。

怎么通过一次性的操作实现上述的效果?


谢谢“hcm19522”大神,这里把具体的操作方法讲一下
打开“测试数据”文件,在A列前插入一列,这样户号成为B列,在A2单元格输入公式如下


=MOD(ROUND(SUMPRODUCT(1/COUNTIF($B$2:$B2,$B$2:$B2)),),2)


公式中B2就是改行户号所在单元格。


四个公式,用处还不知道,先学习。后面再来编辑!


然后双击A2的填充柄完成数据填充。


这样,户号列中不同的户号就分别以数字0和1交替出现,然后分别筛选出0和1,设置不同底色,就实现了目标。


大神就是厉害!

呵呵,魔人大队使用VBA方法实现了一列中不同数据交替显示的效果。
Sub hh()
Dim y As String
s = 1
Set d = CreateObject("scripting.dictionary")

For Each i In Range(Range("a2"), Cells(Rows.Count, 1).End(xlUp))
   d(i.Value) = ""
Next
arr = d.keys
y = Application.WorksheetFunction.Rept("23", d.Count)
For Each m In arr
    For Each i In Range(Range("a2"), Cells(Rows.Count, 1).End(xlUp))
       If i.Value = m Then

          i.Interior.ColorIndex = Mid(y, s, 1)
       End If
     Next
     s = s + 1
Next
      
End Sub
效果如如下

使用VBA实现的效果图

使用VBA实现的效果图




原始数据

原始数据

设置后的效果,不同的户号交替设置为绿蓝底纹

设置后的效果,不同的户号交替设置为绿蓝底纹

只设置一种底纹效果

只设置一种底纹效果

使用公式得到数据

使用公式得到数据

测试数据.rar

12.06 KB, 下载次数: 26

测试数据

TA的精华主题

TA的得分主题

发表于 2018-9-5 08:31 | 显示全部楼层
测试数据.zip (14.31 KB, 下载次数: 16)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-5 09:56 | 显示全部楼层
本帖最后由 痛痛痛痛 于 2018-9-5 09:58 编辑

我是想知道操作方法,不是通过手动一行行的改,因为实际有上千条数据。怎么通过一次性的操作全部数据实现的方法。谢谢啊。

TA的精华主题

TA的得分主题

发表于 2018-9-5 10:06 | 显示全部楼层
痛痛痛痛 发表于 2018-9-5 09:56
我是想知道操作方法,不是通过手动一行行的改,因为实际有上千条数据。怎么通过一次性的操作全部数据实现 ...

你以我为是一个一个改的么?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-5 12:08 | 显示全部楼层
李兴德 发表于 2018-9-5 10:06
你以我为是一个一个改的么?

哈哈,我表述错误,知道不是一个个改的,能讲下操作方法吗?我提问就是想知道操作的方法

TA的精华主题

TA的得分主题

发表于 2018-9-5 13:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
(一) B:J格式化=MOD(ROUND(SUMPRODUCT(1/COUNTIF($B$2:$B2,$B$2:$B2)),),2)
(二) 全部填滿另一色

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-5 14:25 | 显示全部楼层
hcm19522 发表于 2018-9-5 13:53
(一) B:J格式化=MOD(ROUND(SUMPRODUCT(1/COUNTIF($B$2:$B2,$B$2:$B2)),),2)
(二) 全部填滿另一色

大神,谢谢了!!

TA的精华主题

TA的得分主题

发表于 2018-9-5 17:08 | 显示全部楼层
Sub hh()
Dim y As String
s = 1
Set d = CreateObject("scripting.dictionary")

For Each i In Range(Range("a2"), Cells(Rows.Count, 1).End(xlUp))
   d(i.Value) = ""
Next
arr = d.keys
y = Application.WorksheetFunction.Rept("23", d.Count)
For Each m In arr
    For Each i In Range(Range("a2"), Cells(Rows.Count, 1).End(xlUp))
       If i.Value = m Then

          i.Interior.ColorIndex = Mid(y, s, 1)
       End If
     Next
     s = s + 1
Next
      
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-5 20:55 | 显示全部楼层
魔人大队 发表于 2018-9-5 17:08
Sub hh()
Dim y As String
s = 1

哇,用到VBA编程了啊!高手

TA的精华主题

TA的得分主题

发表于 2019-3-1 14:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
代码我试了,在排序好的时候这个确实好用,但我发现了如果相同的数据出现在不连续的区域里,那么这个代码算法就办不成了。最后我用了if来解决一下,应该是可以的。
  1. Sub 颜色区分2()
  2. With Worksheets("Sheet1")

  3.    With .UsedRange.Interior
  4.         .Pattern = xlNone
  5.         .TintAndShade = 0
  6.         .PatternTintAndShade = 0
  7.     End With
  8. For Each i In .Range(.Range("a2"), .Cells(Rows.Count, 1).End(xlUp))
  9.     Cells(2, 1).Interior.ColorIndex = 34
  10.     If Cells(i.Row - 1, 1).Interior.ColorIndex = 34 And Cells(i.Row - 1, 1) = Cells(i.Row, 1) Then
  11.             Cells(i.Row, 1).Interior.ColorIndex = 34
  12.     ElseIf Cells(i.Row - 1, 1).Interior.ColorIndex <> 34 Then
  13.             If Cells(i.Row - 1, 1) <> Cells(i.Row, 1) Then
  14.                 Cells(i.Row, 1).Interior.ColorIndex = 34
  15.             End If
  16.     End If
  17. Next
  18. End With
  19. End Sub
复制代码

测试数据(颜色区分2.0).zip

18.14 KB, 下载次数: 13

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

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-20 10:13 , Processed in 0.053871 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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