如何创建一个包含 0 和 1 的所有组合的表

Pab*_*nez 16 microsoft-excel

在 Excel 中,我需要生成一个表,其中包含 12 个空格的 1 和 0 的所有组合。

1 1 1 1 1 1 1 1 1 1 1 1

0 1 1 1 1 1 1 1 1 1 1 1

0 0 1 1 1 1 1 1 1 1 1 1

0 0 0 1 1 1 1 1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)

等等等等,得到所有的组合,比如

0 1 0 1 0 1 0 1 0 1 0 1
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Her*_*erb 28

因为 2^12=4096,您需要 4096 个单元格(12 位为 12 个)。

原则上,你把这个命令放入 A1 到 A4096:

=Right("00000000000" & Dec2Bin(Row()-1),12)
Run Code Online (Sandbox Code Playgroud)

就是这样,但它仅适用于 0...511(9 位)。所以我们应用了一个技巧:我们将数字分成 3 位和 9 位部分,分别计算这两个字符串,然后将它们连接起来。

因此你有:

=RIGHT("00" & DEC2BIN((ROW()-1)/512),3) & RIGHT("00000000" & DEC2BIN(MOD((ROW()-1),512)),9)
Run Code Online (Sandbox Code Playgroud)

编辑:我不知道可选的位数参数。使用它将提供此功能:

=DEC2BIN((ROW()-1)/512,3) & DEC2BIN(MOD((ROW()-1),512),9)
Run Code Online (Sandbox Code Playgroud)

将其放入单元格 A1 至 A4096。

编辑 2:根据 L?u V?nh Phúc 的评论,OP 可能需要 12 列,每列有一个二进制数字。在这种情况下,把

=MID( DEC2BIN((ROW()-1)/512,3) & DEC2BIN(MOD((ROW()-1),512),9) ,COL(),1)
Run Code Online (Sandbox Code Playgroud)

进入所有单元格 A1 到L 4096。


Sal*_*n A 25

只需将以下公式复制粘贴到其中即可A1

=MOD(QUOTIENT(ROW()-1,2^(COLUMN()-1)),2)
Run Code Online (Sandbox Code Playgroud)

然后拖动填充到L4096

截屏

解释:

  • 式提取所述n的若干位
  • ROW() 表示数字(数字 >= 0)
  • COLUMN() 表示 n (n >= 0)
  • 只需将数字除以 2 ^ n 即可,然后计算结果的模数 2


Gar*_*ent 9

首先在标准模块中输入以下用户定义函数:

Public Function BigBinary(r As Range) As String
    Dim addy As String, s1 As String, s2 As String

    addy = r.Address(0, 0)
    s1 = "=DEC2BIN(INT(A1/2^27),9)&DEC2BIN(INT(MOD(A1,2^27)/2^18),9)&DEC2BIN(INT(MOD(A1,2^18)/2^9),9)&DEC2BIN(MOD(A1,2^9),9)"
    s1 = Replace(s1, "A1", addy)
    s = Evaluate(s1)
    BigBinary = s
End Function
Run Code Online (Sandbox Code Playgroud)

这将返回一个 36 个“位”的字符串。 然后在A1 中输入:

=ROW()-1
Run Code Online (Sandbox Code Playgroud)

并通过A4096向下复制

B1 中输入:

=RIGHT(bigbinary(A1),12)
Run Code Online (Sandbox Code Playgroud)

并通过B4096向下复制:

演示

用户定义函数 (UDF) 非常易于安装和使用:

  1. Alt- 调F11出 VBE 窗口
  2. Alt- I, Alt-M打开一个新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,UDF 将与它一起保存。如果您使用的是 2003 年以后的 Excel 版本,则必须将文件另存为 .xlsm 而不是 .xlsx

要删除 UDF:

  1. 调出如上的 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要使用 Excel 中的 UDF:

=myfunction(A1)
Run Code Online (Sandbox Code Playgroud)

要了解有关一般宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

有关 UDF 的详细信息,请参阅:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

必须启用宏才能使其工作!