ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] vba随机组合文本标题不重复

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-5-20 23:34 | 显示全部楼层 |阅读模式
捕获.JPG
要求如上图,所写
随机组合文本.rar (16.14 KB, 下载次数: 13)

TA的精华主题

TA的得分主题

发表于 2018-5-21 07:04 | 显示全部楼层
楼主的需求,没有看太明白的
建议结合附件举例再说明下
单纯提取不重复单元格,很好提取,使用字典即可,关键其他部分不明白

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-21 10:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
liulang0808 发表于 2018-5-21 07:04
楼主的需求,没有看太明白的
建议结合附件举例再说明下
单纯提取不重复单元格,很好提取,使用字典即可, ...

重新传了。你看下能明白吗

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-21 10:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-5-21 11:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

随机组合文本.zip (32.09 KB, 下载次数: 35)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-21 12:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

大体是这样子,有点细节上不对,b1到g1单元格中的字符位置没有随机出在在组合标题中,全固定在一个位置了。组合后的标题字符数超出了60个字符。

TA的精华主题

TA的得分主题

发表于 2018-5-21 14:19 | 显示全部楼层
比如说已抽取10个单元格,它们的顺序可以任意排列?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-21 14:35 | 显示全部楼层
zopey 发表于 2018-5-21 14:19
比如说已抽取10个单元格,它们的顺序可以任意排列?

是的,但必需包含b1到g1单元格中有的字符,没有的就不抽取

TA的精华主题

TA的得分主题

发表于 2018-5-21 14:37 | 显示全部楼层
  1. Sub 按钮1_Click()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     Set dr = CreateObject("scripting.dictionary")
  4.    
  5.     y = Application.InputBox("请输入生成标题数量:", "输入标题数量", 5, , , , , 1)
  6.     If y = False Then
  7.         MsgBox "请输入有效数字"
  8.         Exit Sub
  9.     End If
  10.     Application.ScreenUpdating = False
  11.    
  12.     arr = [b1:g1]
  13.     For j = 1 To UBound(arr, 2)
  14.         If Len(arr(1, j)) > 0 Then
  15.             dr(arr(1, j)) = ""
  16.         End If
  17.     Next j
  18.     arr = Range([a2], Cells(Rows.Count, 1).End(3))
  19.     For j = 1 To UBound(arr)
  20.         If Not dr.exists(arr(j, 1)) Then
  21.             d(arr(j, 1)) = ""
  22.         End If
  23.     Next j
  24.    
  25.     arr = [b1:g1]
  26.     a = 2
  27.     For i = 1 To y
  28. l2:
  29.         str1 = ""
  30.         dr.RemoveAll
  31.         For j = 1 To UBound(arr, 2)
  32.             If Len(arr(1, j)) > 0 Then
  33.                 dr(arr(1, j)) = ""
  34.             End If
  35.         Next j
  36. l1:
  37.         If dr.Count > 0 Then
  38.             x = WorksheetFunction.RandBetween(0, 5)
  39.             If x = 1 Then
  40.                 x = WorksheetFunction.RandBetween(0, dr.Count - 1)
  41.                 str1 = str1 & dr.keys()(x)
  42.                 dr.Remove dr.keys()(x)
  43.             Else
  44.                 x = WorksheetFunction.RandBetween(0, d.Count - 1)
  45.                 str1 = str1 & d.keys()(x)
  46.             End If
  47.             y1 = dr.Count
  48.             If Len(str1) > 60 Then GoTo l2
  49.             GoTo l1:
  50.         End If
  51.         If Len(str1) > 58 Then
  52.             Cells(a, 8) = str1 & Space(60 - Len(str1))
  53.             Cells(a, 9) = Len(Cells(a, 8))
  54.             a = a + 1
  55.         Else
  56.             GoTo l2
  57.         End If
  58.     Next i

  59.     Application.ScreenUpdating = True
  60. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2018-5-21 14:38 | 显示全部楼层
附件内容供参考。。。。。。

随机组合文本.zip

30.94 KB, 下载次数: 38

评分

1

查看全部评分

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

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-24 00:54 , Processed in 0.047211 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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