如何使用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的字符数大于数组的大小,那么只能使用数组最大的最左边的字符。