ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [开_158]随机排班(已总结)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-12 22:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. =SORTBY(WRAPCOLS(SORTBY(A2:A25,(A2:A25="")+RANDARRAY(24)),6),RANDARRAY(6))
复制代码

评分

11

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-13 13:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 cinlo 于 2023-3-30 08:32 编辑

1.抠字符的写法,区域数组公式,140字符:
  1. =INDEX(A2:A25,MOD(LARGE(MOD(SMALL(9*(A2:A25>"")+RANDBETWEEN(N(+A2:A25),8)+ROW(1:24)%,ROW(1:24)),5^LEN(ROW(4:27))),ROW()+{-1,5,11,17}),1)/1%)
复制代码
2.概率更均等的写法,区域数组公式,141字符:
  1. =INDEX(A2:A25,MOD(LARGE(MOD(SMALL(41*(A2:A25>"")+RANDBETWEEN(ROW(1:24),39)+ROW(1:24)%,ROW(1:24)),9^LEN(ROW(4:27))),ROW()+{-1,5,11,17}),1)/1%)
复制代码

评分

12

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-13 20:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=INDEX(A:A,MOD(LARGE((LEN(A2:A25)&RANDBETWEEN(ROW(2:25)^0,21)/1%)+ROW(2:25),{1,2,3,4}*6-6+ROW(1:6)),50))

评分

11

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-14 22:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=INDEX($A:$A,RIGHT(SMALL(IF(COUNTIF($C2:C7,$A2:$A25)+($A2:$A25="")*(COLUMN()<7)=0,RANDBETWEEN(ROW(2:25)^0,25)/1%+ROW(2:25)),ROW(1:6)),2))

评分

12

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-17 18:21 | 显示全部楼层
先来一个D2:D7区域数组:
  1. =INDEX($A:$A,MOD(LARGE(((COUNTIF($C:C,$A2:$A25)=0)+($A2:$A25="")*(D1="班次4"))*RANDBETWEEN(ROW(2:25)^0,99)+ROW(2:25)%,ROW()-1),1)/1%)
复制代码

评分

9

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-17 22:22 | 显示全部楼层
本帖最后由 陆离Lowry 于 2023-3-26 16:35 编辑

姗姗来迟多交几个思路辛苦验证老师了

6行1列区域数组右拉,间接引用了A2:A25以外的区域范围
  1. =INDEX($A2:$A25,MOD(SMALL((MOD(COUNTIF(OFFSET($A2,,2,7,COLUMNS($A:A)),$A2:$A25),4)&RANDBETWEEN(ROW(1:24)^0,9))+ROW(1:24)%,ROW()-1),1)/1%)
复制代码

下面的引用方式不知道算不算违规。。思路同上
  1. =INDEX($A2:$A25,MOD(SMALL((MOD(COUNTIF(INDIRECT("R2C3:R8C[-1]",),$A2:$A25),4)&RANDBETWEEN(ROW(1:24)^0,9))+ROW(1:24)%,ROW()-1),1)/1%)
复制代码

6行4列区域数组,不引用A2:A25以外的区域范围
  1. =INDEX(A2:A25,MOD(SMALL(FREQUENCY(MOD(SMALL((A2:A25>"")*RANDBETWEEN(ROW(1:24)^0,9)+ROW(2:25)%,ROW()-1),1),ROW(2:24)%)/1%+RANDBETWEEN(ROW(1:24)^0,9)+ROW(1:24)%,{-1,5,11,17}+ROW()),1)/1%)
复制代码


365公式,第二轮绑定随机了
  1. =SORTBY(WRAPCOLS(SORTBY(A2:A25,RANDARRAY(24)+(A2:A25="")),6),RANDARRAY(6))
复制代码


365公式二,随机得比较完全点
  1. =WRAPCOLS(LET(A,A2:A25,B,RANDARRAY(24),SORTBY(SORTBY(A,B+(A="")),B+(ROW(A)>19))),6)
复制代码


评分

10

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-23 16:21 | 显示全部楼层
本帖最后由 jokulboy 于 2023-3-29 16:16 编辑
  1. =IFERROR(INDEX(A2:A25,MOD(AGGREGATE(15,2,RANDBETWEEN(1,CODE(A2:A25))/1%+ROW(1:24),{0,6,12,18}+RIGHT(SMALL(RANDBETWEEN(ROW(1:6)^0,9)/1%+ROW(1:6),ROW(1:6)))),100)),"")
复制代码
知道肯定GG,但是大佬指点后才砍到这程度,不交个答案说不过去~~~
  1. =INDEX(A2:A25,MOD(SMALL(RANDBETWEEN(9^(A2:A25=""),9)/1%+ROW(1:24),6*{0,1,2,3}+RIGHT(SMALL(RANDBETWEEN(ROW(1:6)%,9)+ROW(1:6)%,ROW(1:6)))),100))
复制代码
厚起脸皮又求了一个,继续改进中。。。
  1. =INDEX(A2:A25,MOD(SMALL(RANDBETWEEN((A2:A25="")*9,9)+ROW(1:24)%,6*{0,1,2,3}+RIGHT(SMALL(RANDBETWEEN(ROW(1:6)%,9)+ROW(1:6)%,ROW(1:6)))),1)/1%)
复制代码
再减1个,万一呢~~~



评分

6

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-23 16:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我记得原题目要求只允许引用A2:A25单元格区域,先提交一个之前写的公式吧。
  1. =INDEX(A:A,SECOND(SMALL(SMALL(TIME(,RANDBETWEEN(59^(A2:A25=""),59),ROW(2:25)),ROW(1:24))+RANDBETWEEN(1,9^(ROW(2:25)>19)),COLUMN()*6+ROW()-25)))
复制代码

评分

9

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-30 00:52 | 显示全部楼层
本帖最后由 micch 于 2023-3-30 19:34 编辑
  1. =INDEX($A:$A,DAY(LARGE(IF(TEXT(COUNTIF($C:C,$A2:$A25),IF(COLUMN()<7,,"[>1]\0"))/1,25,DATE(RANDBETWEEN(Z2:Z25+9,99),,ROW(2:25))),ROW(1:6))))
复制代码

D2:D7 区域数组右拉,完全不会写公式了,勉强实现结果吧

image.png

评分

7

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-31 09:15 | 显示全部楼层
重在参与,这题对我来说有点难了

  1. =INDEX(A2:A25,MOD(SMALL(ROW(1:24)-RANDBETWEEN(0,(A2:A25>"")/1%)/1%,RIGHT(SMALL(RANDBETWEEN(ROW()%,9)+ROW()%,ROW()-1))+{-1,5,11,17}),25))
复制代码


评分

5

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-22 07:15 , Processed in 0.069622 second(s), 21 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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