在 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。
解释:
ROW() 表示数字(数字 >= 0)COLUMN() 表示 n (n >= 0)首先在标准模块中输入以下用户定义函数:
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) 非常易于安装和使用:
如果您保存工作簿,UDF 将与它一起保存。如果您使用的是 2003 年以后的 Excel 版本,则必须将文件另存为 .xlsm 而不是 .xlsx
要删除 UDF:
要使用 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
必须启用宏才能使其工作!
| 归档时间: |
|
| 查看次数: |
21637 次 |
| 最近记录: |