【发布时间】:2016-03-22 17:55:12
【问题描述】:
【问题讨论】:
-
我认为 this 可能是 VBA 方法的目标。
标签: excel excel-formula truthtable
【问题讨论】:
标签: excel excel-formula truthtable
将 FirstCell 替换为对包含第一个 2^1 值的单元格的静态引用,例如$D$1 用于 4 位表(16 个值)并自动填充到网格的其余部分(在示例中为 A1:D16)
=IF(MOD(ROW()-ROW(FirstCell),POWER(2, ((COLUMN() - COLUMN(FirstCell)) * -1) + 1)) >= (POWER(2, ((COLUMN() - COLUMN(FirstCell)) * -1) + 1) / 2),1,0)
这背后的逻辑是:
如果当前行模2幂电流列(*-1为第一个值在最后一列,+1,因为它从0开始)大于或等于2幂电流列的一半,取值为1,否则取值为0。
【讨论】:
当前推荐的答案对我不起作用。对于更简单的方法,我建议使用以下公式:
=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 是给定列距最右侧列的列数。
【讨论】:
其他答案可能会让布尔感到难过。这个旨在更布尔化。
您需要用0's 填充第一行(2)
D) - 反转:=NOT(D2)*1(单元格D3的公式,复制到D4:D17)*1 数字化是必要的,以避免看到 TRUE 或 FALSE
=XOR(AND(D2:$D2),C2)*1(单元格C3的公式,复制到所有单元格A3:C17)$D LSB 列,也是上一排。因此,LSB 列的 $D 锚允许复制到任何其他列*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 计算。
【讨论】: