如何在Excel中根据指定的数字获取一列数据的所有可能组合?
问:数据放在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或者邮箱删除。