2014-09-29 50 views
0

我想要做的是创建一个表与所有可能的组合的十个独立通过/失败的结果(0/1,真/假,是/否,+/- ,但是你想要定义它)测试。举例来说,如果所有十个测试都通过了,我会得到一个十个传球值的列。由于有1024种可能的组合,我宁愿不必将它们全部输出。所有可能的组合与10个数据集

我并不需要它非常具有互动性,因为我只需要一次制作表格,但我很想看看它是如何完成学习的/如果我需要为不同的数据集创建类似的表格未来。

我尝试了使用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个可能性。因此,每列中的每个值将是01,并且没有两列是相同的。

+0

请告诉我们你已经尝试过。我们还需要一个你想要的输出样本。 – 2014-09-29 18:02:32

+0

现在的数据格式是什么? – 2014-09-29 19:29:36

+0

只有10个数据集只有值0和1. – 2014-09-29 19:37:37

回答

0

粘贴到一个模块,此位的值:

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 
+0

只要把它放在里面,就好像它正是我想要的!谢谢你的帮助! – 2014-09-30 11:24:59

+0

您能将此标记为答案吗? – 2014-09-30 12:42:56

0

也许在ROW1向下复制到Row512:

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

=1&RIGHT(N1,9) 

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

0

在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 

等等。

该技术使用按位测试并测试输入列中是否设置了特定位。你除以你测试,这样的结果是0或1

+0

似乎我无法使用Excel 2010在此计算机上完成此操作,但当我回家时,我会给它一个镜头。谢谢! – 2014-09-29 20:01:11

+0

哦,该死的,我没有注意到这是Excel 2013中的一个新功能。 – Tmdean 2014-09-29 20:10:40

+0

没问题,听起来好像应该可以工作,但我对Excel中的按位功能没有经验hahah – 2014-09-29 20:42:13