excel中,实现排列组合,这个怎么弄?

一:把A列中数据任选1个,与B列中任意2个数据组合,显示在C列。

二:把A列中数据任选1个,与B列中任意3个数据组合,显示在C列。

用VBA解决,ALT+F11打开VBA编辑器,插入模块,将以下代码粘贴,按F5运行,C列为“一:”的结果,D列为“二:”的结果。

Sub sort()

Dim i, j, k1, k2, k3, k4, m As Integer

Sheet1.Activate

Range("C:C").Clear

i = Range("a65535").End(xlUp).Row

j = Range("b65535").End(xlUp).Row

m = 1

For k1 = 1 To i

  For k2 = 1 To j

    For k3 = k2 + 1 To j

       Cells(m, 3) = Cells(k1, 1) & Cells(k2, 2) & Cells(k3, 2)

       m = m + 1

    Next

  Next

Next

Range("D:D").Clear

m = 1

For k1 = 1 To i

  For k2 = 1 To j

    For k3 = k2 + 1 To j

        For k4 = k3 + 1 To j

          Cells(m, 4) = Cells(k1, 1) & Cells(k2, 2) & Cells(k3, 2) & Cells(k4, 2)

          m = m + 1

        Next

    Next

  Next

Next

End Sub


温馨提示:内容为网友见解,仅供参考
第1个回答  2014-06-28


第一步:使用地址函数获取A列中的一个随机地址 ADDRESS((INT(RAND()*10)+1),1,2)

注意我所做的这张表中A列地址范围仅1~10 你可以根据你的实际情况更改RAND()函数所乘以的数值

第二步:使用INDIRECT函数获取你第一步产生的随机单元格地址里的值(也就是A1到A10里的随机一个值),INDIRECT(ADDRESS((INT(RAND()*10)+1),1,2))

第三步:使用INDIRECT函数获取B1~B10里的任意一个值INDIRECT(ADDRESS((INT(RAND()*10)+1),2,2))

第四步:用字串连接第二步,第三步的公式C1=INDIRECT(ADDRESS((INT(RAND()*10)+1),1,2))&INDIRECT(ADDRESS((INT(RAND()*10)+1),2,2))&INDIRECT(ADDRESS((INT(RAND()*10)+1),2,2))

方法不是太难,希望对你有用!

第2个回答  2014-06-28

1。在C列输入=, 然后选中A列你要组合的数据,接着在C列输入 =A &"-"&B 就可以了

2.同上。在B列选中你要的数据就可以了

相似回答