Excel VBA 如何实现有数据的进行隔行颜色填充,无数据的不填充颜色? 10

例如,只要B列有数据,则对表格进行隔行填充颜色,B列没有数据,则不填充颜色。... 例如,只要B列有数据,则对表格进行隔行填充颜色,B列没有数据,则不填充颜色。 展开
 我来答
自然是种习惯
科技发烧友

2021-12-27 · 智能家居/数码/手机/智能家电产品都懂点
知道答主
回答量:156
采纳率:40%
帮助的人:12.7万
展开全部

用条件格式可以实现

1、选定区域后菜单--->开始页--->条件格式---->管理规则

2、新建规则,打开后点击新建规则

3、依据条件格式优先顺序原则,先筛选为空的数据值格式。选择(只为包含以下内容的单元格设置格式)条件选择【等于】

3、点击格式选择格式,设置成白色,注这里为何不选不填充颜色是因为后面还有奇偶行变色如果这里设置不填充那么奇偶变色时会自动填充破坏了我们设的规则。

4、建立第一规则,隔行变色,选择最后(使用公式确定要设置格式的单元格)输入公式

=MOD(ROW(),2)=1【说明:=1是奇数行变色,=0是偶数行变色】

5、整体格式预览如下

6、确定效果如下这里效果颜色可以随便自己定义

1陈杭荣
科技发烧友

2021-12-27 · 有一些普通的科技小锦囊
知道小有建树答主
回答量:1954
采纳率:57%
帮助的人:351万
展开全部
'按ALT+F11-插入模块-粘贴代码-将表格另存为启用宏的格式
Sub aa()
If [b1] = "" Then
a = [b1].End(xlDown).Row
b = Range("b" & a).End(xlDown).Row
Else
a = 1
b = [b1].End(xlDown).Row
End If
For I = a To b
If (I - a) Mod 2 = 0 Then Range("b" & I & ":m" & I).Interior.ColorIndex = 43
Next
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鹰之幻影
2022-06-30 · TA获得超过1340个赞
知道小有建树答主
回答量:351
采纳率:100%
帮助的人:33.4万
展开全部
VBA考虑的是逻辑,所以我这里给出一个逻辑语句你自己写,你只通过B列判断非空则不填充颜色对吧?
首先,要有方法判断最大的行号,因为列号就是B列,所以只判断行号
语句可以用xxx.End(xlUp).Row 这是说在xxx单元格执行ctrl+↑的操作,如果xxx是空的则光标会在遇到的第一个非空单元格停下,如果xxx是非空单元格则光标会在遇到的第一个空单元格停下。
解释一下这么做的意义:xxx你要定一个空单元格,比如你VBA语句操作的是xlsx格式文件可以定在B1000000,也就是B列第一百万行的单元格(xlsx格式文件有1048576行),总之你要在xxx输入一个行号大于你表格最大行的行号,这样光标在向上移动时,会停在你表格的最大行号所在行上,这是用来获取表格有多少行。
其次,你要判断所有B列小于光标所在行行号的单元格,找到所有非空的单元格的行号。把这些行号装到数组里,假定这个数组命名为arr1,因为是判断行号,所以我个人喜欢把这个arr1做成纵向排列的数组。
然后,你的行号有了,但你的行号有可能是不连续的,对吧?比如说124578行是非空的、有数据的,那么按着你的逻辑“有数据的进行隔行颜色填充,无数据的不填充颜色”你需要在1、4、7行标色对吧?这是随机的无序排列,那么如何在arr1里找到一个规律,使得进行跳行填充呢?我个人的建议是,arr做两列,第一列是123456序列号,第二列是你的非空单元格行号124578,这样你只要判断第一列单行or双行需要标色就行了,标色的序列按着第一列判断,但标色的行号按着第二列判断。比方说你需要单行标色,就第一列每一行都÷2,不能整除就是单数所以标色,能整除就是双数所以不标色,反之亦然。
以上,你就应该能在B列所有非空单元格所在行,隔行标上你需要的颜色了。如果你需要在B列隔行标色,无论有没有值都标色,那更简单,用xxx.End(xlUp).Row判断最后一行,然后所有行号进行循环注意要用Step2,就能隔行标色了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式