计算Excel单元格列表中的二进制数字

时间:2018-07-17 10:30:45

标签: excel

我正在尝试创建一个公式,将列表的十进制数字转换为二进制,然后计算某个位置出现的十进制数字。我正在尝试建立一个像这样的数组公式:

{=SUM(MID(DEC2BIN(A1:A10;10);9;1)}

这将返回#VALUE。有办法吗?

编辑:添加了示例

Input       (Binary Equivalent)

  2             0000000010     
  3             0000000101 
  7             0000000111 
  7             0000000111 
  5             0000000101 
  9             0000001001

 Outputs          Result
(digit to sum
from the right)

  1                 5
  2                 3
  3                 3
  4                 1

4 个答案:

答案 0 :(得分:2)

这是另一种方式,例如右边第二个数字

=SUMPRODUCT(--ISODD(A1:A10/2))

除以2 ^(n-1),其中n是从右边开始的数字:ISODD函数将忽略除法所得的任何分数。

答案 1 :(得分:2)

=SUM(0+MID(DEC2BIN(--A1:A10,10),9,1))

已输入数组。

致谢

答案 2 :(得分:1)

如果您要计算的数字范围内设置了许多第二位数字,则可以执行以下操作:

={SUM((MOD(A1:A10,4)>=2)+0)}

要了解这一点,让我们看一些示例数据

enter image description here

在这里,我有一些十进制数字及其等效的二进制数。在C列中,我刚刚提取了第二位数字(即您的MID(A1,9,1))。然后在D列中,我用4取模。您会看到,当余数大于2时,将设置第二个数字。

MOD(A1,4)基本上将数字除以4,然后得到余数(余数的分子,如果将其表示为4上的分数)。对于二进制数,除以2的幂只是一个右移。 4除以2是右移,剩下的数字是“下降”的数字。在这种情况下,它是前两位数字。他们可以是

00 | 0
01 | 1
10 | 2
11 | 3

因此,我们看到仅当余数大于2时才设置第二个数字。

请注意,原始公式中的+0是将=的布尔结果转换为整数,因此我们可以使用SUM,即SUM({TRUE,FALSE})不起作用,但是{ {1}}会计算为有效的SUM({TRUE,FALSE}+0)

要使其具有通用性,我们假设您要对第SUM({1,0})位数字进行操作:

$E$1

答案 3 :(得分:0)

通过位操作,不必将数字视为字符串。

{=SUM(BITAND(A1:A10;2^(C1-1))/2^(C1-1))}

假设您要查找的位置存储在C1中。