ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 香川群子

[原创] 史上最酷的Excel VBA 组合算法 代码

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2016-6-16 12:54 | 显示全部楼层
本帖已被收录到知识树中,索引项:其他结构和算法
香川群子 发表于 2014-12-20 21:43
代码更新为目前最快速度版:

借鉴了lee1982的改进,把所有Do循环改为更加高效的For循环。

QQ截图20160616125126.jpg

香川老师,我刚发了个求助帖但是审核中求助不了,能不能帮我看看怎么用您这个方式实现这个呢?
组合求助.rar (6.48 KB, 下载次数: 6)

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-6-16 15:47 | 显示全部楼层
longe1013 发表于 2016-6-16 12:54
香川老师,我刚发了个求助帖但是审核中求助不了,能不能帮我看看怎么用您这个方式实现这个呢?

你的要求并没有说清楚。别人看不懂的。

需要具体举例说明。

TA的精华主题

TA的得分主题

发表于 2016-6-16 16:05 | 显示全部楼层
香川群子 发表于 2016-6-16 15:47
你的要求并没有说清楚。别人看不懂的。

需要具体举例说明。

本帖最后由 longe1013 于 2016-6-16 16:00 编辑


数据一数据二数据三数据四组合条件结果
1aAI1:2
2bBII1:3:4
3cCIII1:2:3:4
4dDIV
5eEV
6fFVI
如上,我希望按照组合的条件要求对前面四列的数据组合拼接在一起,1:2表示用第一列和第二列进行组合,如何把这三种组合的条件的结果计算出来并把结果放在【结果】列。求大师们帮忙看下,附件已上。举例条件1:2
1a
1b
1c
...
6f
举例条件1:2:3
1aA
1aB
1aC
...
6fF

同理,我需要把这三种的组合条件汇总在结果列,如何实现?
Sub 自由组合()
    num(0) = Sheet1.Cells(1, Columns.Count).End(1).Column
    If Sheet1.Cells(1, num(0)) <> "组合" Or Sheet1.Cells(Rows.Count, num(0)).End(3).Row < 2 Then
    MsgBox "请设定组合序列"
    Exit Sub
    End If
    For i = 2 To Sheet1.Cells(Rows.Count, num(0)).End(3).Row
        myarr = Split(Sheet1.Cells(i, num(0)), ":")
        num(1) = LBound(myarr)
        If num(1) >= 2 Then
            For j = 2 To Sheet1.Cells(1, myarr(0)).End(4).Row
                For k = 2 To Sheet1.Cells(1, myarr(1)).End(4).Row
                不知道怎么写下去了。。。
                Next
            Next
        End If
    Next
End Sub


上面我想写的,但是因为条件的组合列数不确定,所以不知道怎么写下去了,万谢!

组合求助.rar (6.61 KB, 下载次数: 14)

TA的精华主题

TA的得分主题

发表于 2016-7-7 17:32 | 显示全部楼层
必须支持,虽然自己不懂,谢谢分享!!

TA的精华主题

TA的得分主题

发表于 2016-7-19 22:55 | 显示全部楼层
我是菜鸟,请问怎么把不同组的VBA数据放到一张表格里,请看附件!

TA的精华主题

TA的得分主题

发表于 2016-7-19 22:58 | 显示全部楼层
这里是附件,请帮我看看!

组合9选3-分总表.zip

50.27 KB, 下载次数: 18

TA的精华主题

TA的得分主题

发表于 2016-7-19 23:01 | 显示全部楼层
这里是附件,请帮我看看!

组合9选3-分总表.zip

50.27 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2016-7-21 17:52 | 显示全部楼层
香川群子 发表于 2016-6-16 15:47
你的要求并没有说清楚。别人看不懂的。

需要具体举例说明。

大师,我是菜鸟,帮帮我吧!最近因为工作需要才开始研究VBA的。
我们的产品有L,M,P......很多种材质的,我想先用VBA组合代码 9选3 把描述每种材质的词放在一起,组合成84个核心词(详见表格中的“组合总表”),那么问题来了,我们的产品同时又有很多种不同的叫法,于是我想到让数组当中的每个元素与不同的叫法都结合一次,变成N个扩展关键词。

我现在遇到的问题是:
1.用VBA做组合的时候,除开列出组合数组,怎么通过修改VBA代码让每个组合元素单独列3列出来。
2.我的文件里有很多sheet,晚点还可能要加更多进去,有没有简便的方法,不用写函数公式进去,而通过VBA代码来简化手动工作?

工作需要,急等,
求帮忙,跪谢!

组合9选3总表-未完成.rar

280.81 KB, 下载次数: 15

TA的精华主题

TA的得分主题

发表于 2016-8-14 11:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
好代码,收藏!
如果循环之处可以注释,就省下了按F8。。N次了。

TA的精华主题

TA的得分主题

发表于 2016-9-27 17:50 来自手机 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 11:00 , Processed in 0.047241 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表