手机版

如何在Excel中根据指定的数字获取一列数据的所有可能组合?

时间:2021-09-22 来源:互联网 编辑:宝哥软件园 浏览:

问:数据放在A列,我想得到这些数据中任意三个数据的所有可能组合。如下图1所示,A列存储了5个数据,需要这5个数据中任意3个数据的所有可能组合,如B列所示.如何实现?

图1

(注:这是我偶然看到的一个问题。我觉得程序很聪明,用递归的方法求解。非常简洁。我想把解决方案整理出来,汇编在这里与大家分享!)

答:VBA代码如下:

子组合()

调光范围

暗淡无光

作为变体的暗淡小波

昏暗的光线一样长

作为变量的模糊结果

要合并的数据在当前工作表的列A中。

设置rng=范围(“A1”),范围(“A1”)。End(xlDown))

设置每个组合所需的数据数量。

n=3

将要组合的数据存储在数组中。

小波=应用。索引(应用程序。转置(rng),1,0)

重新定义要组合的数组的大小。

ReDim vResult(1至n)

调用组合记录(vElements,CInt(n),vResult,lRow,1,1)

末端接头

子组合记录(作为变体的文件,_

p为整数,_

vResult AsVariant,_

像龙一样长

雅思考试是一门综合课程,_

整数索引)

作为一个整体

对我来说=到地球的距离

vResult(iIndex)=veles(I)

如果指数=p,那么

lRow=lRow 1

范围(“B”lRow)=连接(vResult,“,”)

每组组合被放置在多列中。

范围(“C”lRow)。调整大小(,p)=vResult

其他

'递归调用'

调用组合记录(vElements,p,vResult,lRow,i 1,iIndex 1)

如果…就会结束

接下来我

末端接头

代码的关键在于递归调用的实现。感兴趣的朋友可以用F8键逐句运行代码,观察代码效果,了解实现过程。

代码的图片版本如下:

如果带注释的代码被恢复,也就是说,组合的结果被放在多个列中,运行后的结果如下图2所示。

版权声明:如何在Excel中根据指定的数字获取一列数据的所有可能组合?是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。