2014-09-10 32 views
0

我一直在努力通过使用Excel的以下问题,我不知道从哪里开始,我尝试过使用组合和渗透,但只有他们的基本了解,你们会怎么办解决这个?试图找到所有可能的组合

有6种咖啡,有10种风味的照片,你可以在每种咖啡中放入一,二或三张照片。基于此,我想知道(并列出)独特的风味组合,以及在没有同一杯咖啡的情况下可以走多久。

回答

1

用宏很简单。

首先要注意的是我们需要组合而不是排列。这是因为{科纳,vanella,巧克力}与{科纳,巧克力,香草}是一样的。

放置6咖啡是A1A6

放置10个香精在B2B11。请假B1空。

输入并运行以下VBA宏

Sub CoffeeMixer() 
    Dim k As Long, _ 
     i As Long, _ 
     j As Long, _ 
     l As Long, _ 
     Z As Long 
    Z = 1 
    For i = 1 To 10 
     cf = Cells(i, 1).Value 
     For j = 1 To 11 
      fl1 = Cells(i, 2).Value 
      For k = j+1 To 11 
       fl2 = Cells(k, 2).Value 
       For l = k+1 To 11 
        fl3 = Cells(l, 2).Value 
        If fl1 = fl2 Or fl1 = fl3 Or fl2 = fl3 Then 
        Else 
         Cells(Z, "C").Value = cf 
         Cells(Z, "D").Value = fl1 
         Cells(Z, "E").Value = fl2 
         Cells(Z, "F").Value = fl3 
         Z = Z + 1 
        End If 
       Next l 
      Next k 
     Next j 
    Next i 
End Sub 

这将产生875个样本。

宏是非常容易安装和使用:

  1. ALT-F11带来了VBE窗口
  2. ALT-I ALT + M打开一个新的模块
  3. 粘贴的东西并关闭VBE窗口

如果保存工作簿,宏将与其一起保存。 如果您正在使用一个版本的Excel更高然后2003,你必须 将文件保存为.XLSM而不是。XLSX

要删除宏:

  1. 弹出VBE窗口如上
  2. 清晰的代码进行
  3. 关闭VBE窗口

从Excel使用宏:

  1. ALT-F8
  2. 选择宏
  3. 触摸RUN

要了解更多关于一般的宏,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

宏必须启用为了这 上班!

下面是一个示例:

xx

编辑#1

下面是更新后的代码:

Sub CoffeeMixer() 
    Range("C:F").Clear 
    Dim k As Long, _ 
     i As Long, _ 
     j As Long, _ 
     l As Long, _ 
     Z As Long 
    Z = 1 
    For i = 1 To 6 
     cf = Cells(i, 1).Value 
     For j = 1 To 11 
      fl1 = Cells(j, 2).Value 
      kk = j + 1 
      If j = 11 Then kk = 11 
      For k = kk To 11 
       fl2 = Cells(k, 2).Value 
       ll = 1 + k 
       If k = 11 Then ll = 11 
       For l = ll To 11 
        fl3 = Cells(l, 2).Value 
         Cells(Z, "C").Value = cf 
         Cells(Z, "D").Value = fl1 
         Cells(Z, "E").Value = fl2 
         Cells(Z, "F").Value = fl3 
         Z = Z + 1 
       Next l 
      Next k 
     Next j 
    Next i 
End Sub 

使用此版本,您必须从B1填写直通B10离开B11空白!

+0

这真是太好了,非常感谢你花时间写出所有这些,这看起来非常接近我想要的结果,只是用风味组合打印出来的结果除外,宏如何改变以便它显示所有组合与一种类型的咖啡和1,2或3味道? – 2014-09-10 14:19:55

+0

@Axios_Andrew我稍后会提供一个更新。 – 2014-09-10 14:32:40

+0

我刚才注意到的其他一些东西也没有显示每种咖啡只有一种风味。 – 2014-09-10 14:36:25

1

建立您的表如下所示:

A  B 
Coffee1 Syrup1 
Coffee2 Syrup2 
Coffee3 Syrup3 
Coffee4 Syrup4 
Coffee5 Syrup5 
Coffee6 Syrup6 
     Syrup7 
     Syrup8 
     Syrup9 
     Syrup10 

对于上述数据,下面的公式将计算的组合的总数:

=COUNTA(A:A)*COUNTA(B:B) 
+COUNTA(A:A)*COUNTA(B:B)^2 
+COUNTA(A:A)*COUNTA(B:B)^3 

的所花费的时间的长度来尝试所有不同的组合取决于你的咖啡因成瘾程度。