您不需要 VBA 来执行此操作。以下工作表公式可助您一臂之力。
选择单元格B2 并粘贴此公式:
=CHOOSE(1+MID(LEFT("00000",5-LEN(DEC2BIN(32-ROW()+1)))&DEC2BIN(32-ROW()+1),COLUMN()-1,1),"No","Yes")
现在将该公式复制到此范围:B2:F33
就是这样。
当然,之后,您可能希望复制结果并粘贴为值以在单元格中使用硬值而不是公式。
下面是如何在 VBA 中执行此操作,如果您更喜欢编码解决方案:
Option Explicit
Sub DisplayYesNoPerms()
Dim rows&, cols&
cols = 5
rows = 2 ^ cols
[b2].Resize(rows, cols) = YesNoPerms(rows, cols)
End Sub
Function YesNoPerms(rows&, cols&)
Dim i&, j&, t$, v
ReDim v(0 To rows - 1, 1 To cols)
For i = 0 To rows - 1
t = Format(DecToBin(i), String(cols, "0"))
For j = 1 To cols
v(i, j) = IIf(Mid(t, j, 1), "No", "Yes")
Next
Next
YesNoPerms = v
End Function
Function DecToBin$(ByVal n&)
Do
DecToBin = n Mod 2 & DecToBin
n = n \ 2
Loop While n
End Function