ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3095|回复: 26

[求助] VBA生成随机组合

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-5-4 09:37 | 显示全部楼层 |阅读模式
1.根据Sheet4:A下面的种类数量N,每次随机生成N个文字组合(不重复,如果有可能就尽可能每次都不重复直到组合用完),因为每天要生成N个,所以所以尽量不重复。

2.如果随机不好操作,能不能根据Sheet4:A下面的种类数量N,生成全部组合,可能也会数量太多。

谢谢大家!

test.rar

10.22 KB, 下载次数: 17

TA的精华主题

TA的得分主题

发表于 2021-5-4 10:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub 按钮1_Click()
    arr = Sheets(4).UsedRange
    Sheets(1).Select
    For j = 2 To UBound(arr)
        Cells(j, 1) = arr(j, 1)
        brr = Sheets(2).UsedRange
        x = WorksheetFunction.RandBetween(1, UBound(brr, 2))
        y = WorksheetFunction.RandBetween(1, Sheets(2).Cells(Rows.Count, x).End(3).Row)
        str1 = "名称:" & brr(1, x) & brr(y, x) & arr(j, 1) & Chr(10) & "地点: " & brr(1, x) & brr(y, x)
        
        brr = Sheets(3).UsedRange
        x = WorksheetFunction.RandBetween(1, UBound(brr, 2))
        y = WorksheetFunction.RandBetween(1, Sheets(2).Cells(Rows.Count, x).End(3).Row)
        str1 = str1 & Chr(10) & "品牌:" & brr(1, x) & Chr(10) & "型号: " & brr(y, x) & Chr(10) & Chr(10) & brr(1, x) & "的其他型号: "
        str2 = ""
        For i = 2 To UBound(brr)
            If Len(brr(i, x)) > 0 Then
                str2 = str2 & "," & brr(i, x)
            End If
        Next i
        str1 = str1 & Chr(10) & Mid(str2, 2)
         str1 = str1 & Chr(10) & brr(1, x) & arr(j, 1) & arr(j, 2)
        Cells(j, 2) = str1
    Next j
End Sub

TA的精华主题

TA的得分主题

发表于 2021-5-4 10:47 | 显示全部楼层
看看附件内容是否合适吧

test1111.zip

23.21 KB, 下载次数: 6

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-4 11:00 | 显示全部楼层
本帖最后由 mjgw 于 2021-5-4 11:18 编辑

谢谢您的帮助!还是要麻烦您帮我修改一下! 不会出现空的栏目!




省会的获得就在这里随机找一个

省会的获得就在这里随机找一个

找到省会对应下面随机找一个市

找到省会对应下面随机找一个市

品牌也是在这里随机找一个

品牌也是在这里随机找一个

找到品牌再在下面随机找一个型号

找到品牌再在下面随机找一个型号

总的目录就是这个X下的

总的目录就是这个X下的

特性就在Y下面的随机选

特性就在Y下面的随机选

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-4 11:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-5-4 11:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
mjgw 发表于 2021-5-4 11:14
.....数量不定  不出现

不出现的部分,楼主就给删除了,然后测试看看

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-4 12:35 | 显示全部楼层
名称始终要有
地点也始终要有

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-6 08:39 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-5-6 22:44 | 显示全部楼层
mjgw 发表于 2021-5-6 08:39
这些当中的中文可以自动获取表格中的文字吗?

楼主将自己的文档数据完善了,然后测试看看有什么问题,再提交附件进行说明

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-5-7 08:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 mjgw 于 2021-5-7 08:41 编辑
liulang0808 发表于 2021-5-6 22:44
楼主将自己的文档数据完善了,然后测试看看有什么问题,再提交附件进行说明

大师,很感谢您的帮助!谢谢您!

下面这样表达不知道是否表达清楚了。

一   根据已有的表格内的文字随机生成组合表格 文字,尽量不重复。
二  ......数量不定   代表此处的数量  可以增加

1. 起点sheet4的A列 获取品种数量 得到生成  sheet1的A列表格

电视机
洗衣机
冰箱
热水器
煤气灶
集成灶

得到sheet1的A列

电视机
洗衣机
冰箱
热水器
煤气灶
集成灶

2. 根据表格sheet2的1横 获得随机选择一个省会,再根据省会得到随机选择一个城市名称
比如 随机得到省会 山东
        随机得到城市名称  枣庄

3. 根据表格sheet3的1横 获得随机选择一个电器品牌名称,再根据电器品牌的名称得到随机选择一个型号
比如 随机得到电器品牌名称 志高
        随机得到型号  Z008

4. 表格sheet4的B列 获取描述 随机选择1个(能随机选择2个就更好了)
比如: 随机得到描述 特点:价格便宜,质量可靠1

依次组合结果:
名称:山东枣庄电视机
地点:山东枣庄
品牌:志高
型号:Z008

志高电视机其他的型号:Z001,Z002,Z003,Z004,Z005,Z006,Z007,Z008,Z009,Z010

志高电视机的特点:
价格便宜,质量可靠1
志高电视机的优点:
价格便宜,质量可靠2

test.rar

10.06 KB, 下载次数: 7

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-3-29 06:49 , Processed in 0.045062 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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