我想使用SUMPRODUCT,以便它可以在包含二进制数字串的单元格内工作,例如:
Cell A1 =" 011001" 单元格B1 =" 123456"
现在我想使用SUMPRODUCT来执行加权平均,单元格A1包含数字而单元格B1包含权重,正确的公式应该像这样工作:
1st element (0) = weight (1)
2nd element (1) = weight (2)
3rd element (1) = weight (3)
4th element (0) = weight (4)
5th element (0) = weight (5)
6th element (1) = weight (6)
这个假想的公式SUMPRODUCT(A1; B1)/ SUM(B1)应该相等= ~52% 如果有人知道该问题的任何解决方案,请提前感谢您。
答案 0 :(得分:3)
这将做你想要的:
=SUMPRODUCT(MID(A1,ROW(1:6),1)*MID(B1,ROW(1:6),1))/SUMPRODUCT(--MID(B1,ROW(1:6),1))
如果你想让它更具动感,如果你的数字不总是6位数:
=SUMPRODUCT(MID(A1,ROW(INDIRECT("1:" & MIN(LEN(A1),LEN(B1)))),1)*MID(B1,ROW(INDIRECT("1:" & MIN(LEN(A1),LEN(B1)))),1))/SUMPRODUCT(--MID(B1,ROW(INDIRECT("1:" & MIN(LEN(A1),LEN(B1)))),1))
现在这将是两个数字中最短的一个,并将其用作数字长度。因此,如果A1只有5位数而B1有6位,那么它只会使用前5位数。
如果B1为5且A1为6,则仅使用前两个。
随着数字长度的增加或缩小,公式将适应。
答案 1 :(得分:0)
对数组使用大括号语法,示例在强制后如下所示: = SUMPRODUCT({0,1,1,0,0,1},{1,2,3,4,5.6})
答案 2 :(得分:0)
如果权重总是按顺序为1,2,3,4,5,6,则使用
=SUMPRODUCT(VALUE(MID(A1,{1,2,3,4,5,6},1)),{1,2,3,4,5,6})/21
如果6个权重可能与此不同,则使用
=SUMPRODUCT(VALUE(MID(A1,{1,2,3,4,5,6},1)),VALUE(MID(B1,{1,2,3,4,5,6},1)))/SUM(VALUE(MID(B1,{1,2,3,4,5,6},1)))
如果有多于或少于6个权重,则相应地调整数组{1,2,3,4,5,6}
。
如果A1
中的二进制字符串长度短于数组大小,则在两种情况下都会出现#VALUE!
错误。如果B1
中的权重字符串比数组大小短,则在第二种情况下会得到相同的错误(在第一种情况下不使用B1
)。如果任一字符串的字符数多于数组的大小,则只使用最左边的字符,直到数组的大小。