首先在某单元格输入 =ROUNDDOWN((COLUMN(NI1)-2)/6,0) 和 =ROUNDDOWN((COLUMN(NI1)-6)/6,0) 得到均需要循环61次数组进行累加
打开VBA,调出方法如下所示,在VBAProject->Sheet表格中找到数据所在区域,右键->插入->模块 得到一个窗口,输入
Sub t()
Dim i As Integer, ii As Integer, iii As Integer
ii = 3 '黄色
iii = 7 '绿色
[a2] = 0
[a3] = 0
For i = 1 To 61
[a2] = Cells(2, 1) + Cells(1, ii)
[a3] = Cells(3, 1) + Cells(1, iii)
ii = ii + 6
iii = iii + 6
Next
'单元格A2值对应黄色求和
'单元格A3值对应绿色求和
End Sub
复制粘贴后点击F5即可运行完毕,最后回到数据所在表格查看计算结果。
比如“开始”项目下右键即可出现
打开开发工具,默认关闭
打开Visual Basic
用函数,A2单元格 =C1 B2单元格 =INDIRECT("R"&ROW()&"C"&(COLUMN()-1),FALSE) + OFFSET($C1,0,(COLUMN()-1)*6,1,1),横向拖动B2单元格直至BI2。 BI2单元格值为黄色求和
同理,A3单元格 =G1 B3单元格 =INDIRECT("R"&ROW()&"C"&(COLUMN()-1),FALSE) + OFFSET($G1,0,(COLUMN()-1)*6,1,1),横向拖动B3单元格直至BI3。 BI3单元格值为绿色求和
最后说明下BI单元格的由来,在名称框内输入r1c61回车即可跳转到61列对应英文。
今天看了下别人的函数做法,发现自己做复杂了,更简单的是
A2 单元格 =SUMPRODUCT((MOD(COLUMN(A1:BL1),6)=3)*A1:BL1) A2即为黄色求和
A3 单元格 =SUMPRODUCT((MOD(COLUMN(A1:BL1),6)=1)*A1:BL1) - A1 A3即为绿色求和
或者
A2 单元格 {=SUM((MOD(COLUMN(A1:BL1),6)=3)*A1:BL1)} A2即为黄色求和
A3 单元格 {=SUM((MOD(COLUMN(A1:BL1),6)=1)*A1:BL1) - A1} (这里需框选 SUM((MOD(COLUMN(A1:BL1),6)=1)*A1:BL1) CTRL+SHIFT+ENTER,否则会报错) A3即为黄色求和
思路是采用数组函数进行判断,仅余数为需要时才逻辑值才为1,其余值时为0,相乘后余数为需要的值不变,余数为其余值则会为0,最后进行相加。