EXCEL中不连续单元格计算问题

狐帝 2020-12-06 06:18:09
有一张EXCEL表,如下图所示:



现在要将每个分类的组1~组10的分值列与权重列相乘,并将这些乘积求和,结果放在该分类行的“总分”列中。
即,V3 = B3*C3 + D3*E3 + ... + T3*U3

求教各位高人如何用公式做这种计算?谢谢!
...全文
8095 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2020-12-09
  • 打赏
  • 举报
回复
其实,发现还是可以的,甚至也算简单,就是再加 iferror()公式,配合数组公式功能,即 V3 输入下面的公式后,按住 Ctl+Shift 再回车:
V3=SUMPRODUCT(IFERROR((B3:T3)*MOD(COLUMN(B3:T3)+1,2),0),IFERROR(C3:U3+0,0))
下面涂淡绿色的是分别乘了相加,和上面的进行对比的。
狐帝 2020-12-07
  • 打赏
  • 举报
回复
但是,里面如果有了公式,哪怕是=""这样的,也不会被认为是空单元格了,是吧?
狐帝 2020-12-07
  • 打赏
  • 举报
回复
引用 4 楼 zara 的回复:
如果那些 斜杠 符号可以替换为 0 的话,可以用 sumproduct() 函数:(从网上搜索来的) V3=SUMPRODUCT(B3:T3*MOD(COLUMN(B3:T3)+1,2),C3:U3*MOD(COLUMN(C3:U3),2))
这个方法很好。可是要命的是,表中的“/”是由另外的公式自动生成的(=if(...,...,"/"),所以用sumproduct计算会出错,在公式里把"/"换成""也不行。"0"是有物理含义的数值,而"/"表示某种条件不成立,所以二者不能互换。如果能找到给单元格赋值为“空”单元格的方法就好了。
zara 2020-12-07
  • 打赏
  • 举报
回复
我觉得把 / 替换为 0 使用 sumproduct() 公式比较合算。一定要显示成 / 的话,可以通过格式设置把 0 显示为 / 而非默认格式设置里的 - 。
zara 2020-12-07
  • 打赏
  • 举报
回复
#4 的 sumproduct() 公式里的第二个 mod() 多余,因为前面个就已经进行了划分,即 分值乘 1 权重 乘 0 ,后面的权重组 就无所谓了。
狐帝 2020-12-07
  • 打赏
  • 举报
回复
谢谢楼上各位。问题中有一点我没说清楚,帖子里的表之放了10组,事实上,实际数据有几百组,分类有几十类,而且每一类的组数并不一定相同。用另外一组参数做试验得到的结果的分组数和分类数又可能变化。所以想用一个通用的公式,看看能不能解决。如果实在用公式解决不了,就得考虑用VBA了。但是用VBA的话,就必须启用宏,在我们的软件环境里,使用宏的EXCEL文件容易被破坏,很是麻烦。
zara 2020-12-07
  • 打赏
  • 举报
回复
#2 这个做法,10组数据也可接受,要是再多,甚至更多,就有些勉强了。
zara 2020-12-07
  • 打赏
  • 举报
回复
如果那些 斜杠 符号可以替换为 0 的话,可以用 sumproduct() 函数:(从网上搜索来的)
V3=SUMPRODUCT(B3:T3*MOD(COLUMN(B3:T3)+1,2),C3:U3*MOD(COLUMN(C3:U3),2))
ziqi0716 2020-12-07
  • 打赏
  • 举报
回复
1楼的iferror做判断就可以: =IFERROR(b3*c3,0)+IFERROR(d3*e3,0)......
ziqi0716 2020-12-07
  • 打赏
  • 举报
回复
你这个公式改下,增加下if判断,判断代码可能比较长,可以写出一个组1的,然后用编辑器批量生成,然后拖拽,就解决了嘛
zara 2020-12-07
  • 打赏
  • 举报
回复
这个数据组织,感觉是没办法做啊?如果 "分值" 一组,“权重”一组,可以用数组公式配合 iferror() 公式。

6,216

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office应用
社区管理员
  • Microsoft Office应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧