EXCEL中间隔多列求和,如何用公式或者函数能快速准确的得出结果,能解析指教一下用法最好,感谢俶

2025-03-04 03:58:50
推荐回答(1个)
回答1:

首先在某单元格输入 =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,最后进行相加。