如何使用SUMPRODUCT与二进制值作为单元格中的string?
我想使用SUMPRODUCT,以便在包含二进制数字串的单元格内工作,例如:
单元格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%如果有人知道这个问题的任何解决scheme,提前非常感谢。
这将做你想要的:
=SUMPRODUCT(MID(A1,ROW(1:6),1)*MID(B1,ROW(1:6),1))/SUMPRODUCT(--MID(B1,ROW(1:6),1))
如果你想使它更具dynamic性,如果你的号码不总是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是五,A1是六,那么只会使用前两个。
随着数字长度的增长或缩小,公式将适应。
使用数组的大括号语法,示例在强制后看起来像这样:= SUMPRODUCT({0,1,1,0,0,1},{1,2,3,4,5.6})
如果重量总是按照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
二进制string的长度比数组大小更短,您将获得#VALUE!
两种情况下都是错误的 如果B1
的权重string小于数组大小,则在第二种情况下会得到相同的错误(在第一种情况下不使用B1
)。 如果任何一个string的字符数大于数组的大小,那么只能使用数组最大的最左边的字符。