vba word 指定的表格_Excel表格指定颜色求和,VBA一键计算

b2d426f63a697f2a8fc345faed0fb3cb.png

昨天,我回答了一个网友提问,想要对表格中填充颜色的单元格进行求和运算,他说没找到方便的办法,于是,本着无休止的探索精神,我查遍了函数公式和VBA语言,最终搞出了一个利用VBA一键自动运算的方法,今天我将详细步骤发一下:

138a2ebad8a5bf9b40adb4c07ff8fd77.png

从上图我们可以看到,这里的需求是对付款金额内的颜色填充单元格进行求和然后除以合同金额,最终实现付款进度的显示,这里无论增删行,都只需要点击按钮,就能一键运算,当然也可以下拉。

操作步骤

仅需五步

【粘贴代码】打开VBA编辑器,右键插入模块,复制代码并粘贴。

0df28cbe85b401e620ab31023d61e9e9.png

【绘制按钮】插入一个图形,设置格式,在图形上点击右键指定宏。

6299da5f25316d3b71f2122908b8902f.png

【加辅助列】在进度列前面插入一个辅助列,设置列宽,将颜色填充为需要统计的单元格相同的颜色。

878d214ff39adf062e3166b9d3acfdb5.png

【设置格式】给单元格设置格式为显示百分比,条件格式添加添加规则,样式为数据条显示,类型为数字,最小值0最大值1。

2de5c2d27d1978cff425ad5a79973cf4.png

上述操作可以不插入按钮,直接使用VBA定义的函数公式:=getmarryyou(A1:B10,C1) 这里的“getmarryyou”为VBA中定义的函数公式名称,可以在VBA第一段代码中自行修改为任意,公式中“A1:B10”为需要按颜色求和的单元格范围(按需选择),“C1”为颜色条件的单元格(例如我对红色填充单元格求和,则需将C1填充为红色,或者将C1改为已经填充为红色的单元格),总之,举一反三!

代码如下▼

Public Function GETMARRYYOU(X As Range, Y As Range)
    For n = 1 To X.Count
        If X(n).Interior.ColorIndex = Y.Interior.ColorIndex Then GETMARRYYOU = GETMARRYYOU + X(n).Value
    Next
End Function
Sub 填入与刷新()
For i = 2 To [G65536].End(3).Row
'i=2意思为第2行起,G65536为G列,上一行为从G列第二行开始判断
     If Cells(i, 7) <> "" Then Cells(i, 9) = "=IFERROR((GETMARRYYOU(RC[1]:RC[6],RC[-1])/RC[-2]),"""")"
     'i,7意思为第7列(即G列),i,9意思为第9列(即I列),上一行意思为如果G列单元格不为空,则在I列填入公式
Next
End Sub

需要注意的是,这是根据网友需求进行设计的,如果表格数据所在行与列发生变化,则需要对代码进行相应修改,代码我添加了注释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值