ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请教关于字典提取(类似洗牌,取出之后逐渐减少)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-11-2 14:51 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
image.png
image.png

随机取固定个数的盒号盒盒质量.zip

16.05 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2024-11-2 14:52 | 显示全部楼层
先写入字典,取出字典后,remove dic

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-2 15:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢,刚开始学习字典,无从下手,有时间请帮帮忙!

TA的精华主题

TA的得分主题

发表于 2024-11-2 15:35 | 显示全部楼层
楼主并没有说清楚,你每次取出6个,取出的数据放哪里呢?只取出B列数据呢还是连同C列一起取出呢?

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-11-2 15:43 | 显示全部楼层
本帖最后由 shiruiqiang 于 2024-11-2 15:47 编辑

image.jpg

随机取固定个数的盒号盒盒质量.rar

18.25 KB, 下载次数: 15

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-2 15:58 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-2 16:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
完全是我的意图,太感谢了!!!!!!!!!

TA的精华主题

TA的得分主题

发表于 2024-11-2 17:09 | 显示全部楼层
我感觉等价于先把数组顺序随机打乱,再6个一组顺序取出,剩余不足6个全部取出,不需要字典,也不需要随机取6次。

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-11-2 17:19 | 显示全部楼层
Sub test1()
Dim brr(1 To 6) As String
Dim d As Dictionary
arr = Range("B1:c" & Cells(Rows.Count, 1).End(xlUp).Row).Value   '赋值盒号所在列非空行的值给数组arr
u = UBound(arr)                                                  '数组arr的个数u
Set d = CreateObject("scripting.dictionary")                     '建立字典
'  Set d = New Dictionary
  For i = 2 To u
    d(i) = arr(i, 1) & "-" & arr(i, 2)
  Next i
a = d.Count
  
For i = 1 To Int(a / 6)
   For j = 1 To 6
        str1 = d.Keys
        b = Application.WorksheetFunction.RandBetween(1, UBound(str1))
        brr(j) = d(str1(b - 1))
        d.Remove (str1(b - 1))
        a = d.Count
        Debug.Print "第" & i & "批", j, brr(j)
   Next j
Next i
'余下部分
str1 = d.Items
For i = 0 To UBound(str1)
    brr(i + 1) = str1(i)
    Debug.Print "第" & Int((UBound(arr) - 1) / 6) + 1 & "批", i + 1, brr(i + 1)
Next i

End Sub

TA的精华主题

TA的得分主题

发表于 2024-11-2 17:25 | 显示全部楼层
取出来的key值是知道的,dic.remove (key)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 02:01 , Processed in 0.046911 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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