目前推荐的答案对我不起作用。为了一个更简单的方法,我建议使用以下公式:
=IF(MOD(FLOOR((ROW()-ROW(TopRight))/(2^(COLUMN(TopRight)-COLUMN())), 1),2)=0,0,1)
TopRight
是真值表的右上角单元格。
例如,如果您正在创建一个包含8个条目且从A3
开始的真值表,请将TopRight
替换为$H$3
,然后向下和向右拖动公式。
基本解释:在真值表中,每隔2 ^ n
行交替显示1或0,其中n
是给定列到最右列的距离。
=IF(MOD(ROW()-ROW(FirstCell),POWER(2, ((COLUMN() - COLUMN(FirstCell)) * -1) + 1)) >= (POWER(2, ((COLUMN() - COLUMN(FirstCell)) * -1) + 1) / 2),1,0)
=XOR(AND(D2:$D2),C2)*1
(单元格C3
的公式,复制到所有单元格A3:C17
)$ D
,也是向上一行。因此,$ D
锚定LSB列允许复制到任何其他列*1
用于结果的数字化TRUE/FALSE
以下是一个 Microsoft 365 的一行代码:
=TRANSPOSE(LET(n,5,m,2^n,x,SEQUENCE(n,m,0),y,FLOOR(x/m,1),z,FLOOR((x-y*m)/2^(n-1-y),1),MOD(z,2)))
n
是所需的列数,m
存储每列的长度。
该公式找到 x
所在的行并将值存储在 y
中,然后逐步将每行分成正确的格式,并输出结果 mod 2
以生成输入真值表集。
使用 TRANSPOSE
是因为 SEQUENCE
将数字从左到右、从上到下放置。
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
.....
请记住,这些数字只能是0或1。
对于D列:D2=1-D1
对于C列:C2=IF(D1=1,1-D1,D1)
对于B列:B2=IF((C1=1)*(D1=1),1-B1,B1)
.....
完成后,请复制没有公式的数字到您的真值表中,以避免Excel计算。