【发布时间】:2020-11-17 12:39:20
【问题描述】:
您能告诉我如何在 6 列中获得所有是和否的排列吗?
问了一个类似的问题,并为 5 列提供了以下公式:
=CHOOSE(1+MID(LEFT("00000",5-LEN(DEC2BIN(32-ROW()+1)))&DEC2BIN(32-ROW()+1),COLUMN()-1,1),"No","Yes")
为 5 列提供了以下 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
奖励逻辑:
- 如果第 1 列为否,则第 2 列不能为是。
- 如果第 3 列为否,则第 4 列不能为是。
- 如果第 5 列为否,则第 6 列不能为是。
【问题讨论】:
-
您是否出于特定原因标记了 VBA?您是否有忘记包含在问题中的代码?
-
我已经添加了上面的VBA代码。
标签: excel vba combinations permutation