我正在尝试创建一个公式,将列表的十进制数字转换为二进制,然后计算某个位置出现的十进制数字。我正在尝试建立一个像这样的数组公式:
{=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
答案 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)}
要了解这一点,让我们看一些示例数据
在这里,我有一些十进制数字及其等效的二进制数。在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
中。