Excel 具有10个数据集的所有可能组合

Excel 具有10个数据集的所有可能组合,excel,excel-2010,Excel,Excel 2010,我要做的是创建一个表,其中包含十个独立的通过/失败0/1、真/假、是/否、+/-的结果的所有可能组合,不管您如何定义它。例如,如果所有十个测试都通过了,我会有一列十个通过值。既然有1024种可能的组合,我真的不想把它们都打出来 我真的不需要它具有很强的交互性,因为我只需要制作一次表,但我很想看看如何学习/如果我将来需要为不同的数据集创建类似的表 我尝试了这里列出的一个使用Microsoft QUERY输入的方法,但说实话,我并没有真正理解它。输出的示例如下所示: Combo 1: Comb

我要做的是创建一个表,其中包含十个独立的通过/失败0/1、真/假、是/否、+/-的结果的所有可能组合,不管您如何定义它。例如,如果所有十个测试都通过了,我会有一列十个通过值。既然有1024种可能的组合,我真的不想把它们都打出来

我真的不需要它具有很强的交互性,因为我只需要制作一次表,但我很想看看如何学习/如果我将来需要为不同的数据集创建类似的表

我尝试了这里列出的一个使用Microsoft QUERY输入的方法,但说实话,我并没有真正理解它。输出的示例如下所示:

Combo 1:    Combo 2:     Combo 3:
1             1            1
1             1            1
1             1            1
1             1            1
1             1            1
1             1            1
1             1            1
1             1            1
1             1            0
1             0            0

等等,所有1024种可能性。因此,每列中的每个值都将是0或1,并且没有两列是相同的。

可能在第1行中复制到第512行:

=DEC2BIN(ROW()-1,10) and

=1&RIGHT(N1,9)

其中N是包含第一个公式的列。

在Excel 2013中,可以使用新的BITAND函数

创建一个数字介于0和1023之间的列

假设这是A列,在右边的10列中使用这种形式的公式

Column B: =BITAND($A2,512)/512
Column C: =BITAND($A2,256)/256
Column D: =BITAND($A2,128)/128
等等


此技术使用按位and来测试输入列中是否设置了特定位。除以正在测试的位的值,结果为0或1。

将其粘贴到模块中:

Sub test()
    Dim c As Long
    Dim n As Long
    Dim i As Integer

    For i = 0 To 1023
        Sheet1.Cells(i + 1, 1) = "'" & Dec2Bin(i, 10)
    Next i

    Sheet1.Columns(1).TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 1), Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array _
        (5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1)), TrailingMinusNumbers:=True

    For c = 11 To 1034
        For n = 2 To 11
            Sheet1.Cells(n, c) = Sheet1.Cells(c - 10, n - 1)
            Sheet1.Cells(1, c) = "Case " & c - 10 & ":"
        Next n
    Next c

    Sheet1.Columns("A:J").Delete
End Sub
Function Dec2Bin(ByVal DecimalIn As Variant, _
              Optional NumberOfBits As Variant) As String
    Dec2Bin = ""
    DecimalIn = Int(CDec(DecimalIn))
    Do While DecimalIn <> 0
        Dec2Bin = Format$(DecimalIn - 2 * Int(DecimalIn / 2)) & Dec2Bin
        DecimalIn = Int(DecimalIn / 2)
    Loop
    If Not IsMissing(NumberOfBits) Then
       If Len(Dec2Bin) > NumberOfBits Then
          Dec2Bin = "Error - Number exceeds specified bit size"
       Else
          Dec2Bin = Right$(String$(NumberOfBits, _
                    "0") & Dec2Bin, NumberOfBits)
       End If
    End If
End Function

请告诉我们你已经试过了什么。此外,我们还需要一个您想要的输出样本。数据现在是什么格式?只有10个数据集,只有值0和1。它是如何格式化的?显示源代码的示例。我没有真正格式化它。我猜消息来源可能会想:Set 1=0,1 Set 2=0,1 Set 3=0,1等等,如果这有帮助的话,我不能用Excel 2010在这台计算机上完成,但我回家后会试一试。谢谢你!哦,糟糕,我没有注意到它是Excel 2013中的一个新函数。没问题,听起来应该可以工作,但我没有在Excel中使用按位函数的经验。哈哈,把它放进去,似乎正是我想要的!谢谢你的帮助!