ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-10 22:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. =LET(fx,LAMBDA(x,y,SORTBY(x,RANDARRAY(y))),HSTACK(WRAPROWS(fx(A2:A19,18),3),fx(A20:A25,6)))
复制代码

评分

9

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-11 07:09 | 显示全部楼层
本帖最后由 楼兰城主TT 于 2023-3-12 13:01 编辑

=LET(a,SORTBY(A2:A25,RANDARRAY(24)),SORT(WRAPCOLS(FILTER(a,a>""),6,"")))

补充内容 (2023-4-7 21:18):
最早的公式不完全随机,优化365公式如下
=SORTBY(WRAPCOLS(SORTBY(A2:A25,RANDARRAY(A2:A25>"")),6),RANDARRAY(6))

补充内容 (2023-4-7 21:19):
区域数组
=INDEX(A2:A25,MOD(SMALL(SMALL((A2:A25>"")*RANDBETWEEN(ROW(1:24)%,99)/1%+ROW(1:24),ROW(1:24))+RANDBETWEEN(ROW(1:24)%,9)*(ROW(1:24)<7)/1%%,ROW(1:6)+{0,1,2,3}*6),50))

评分

11

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-11 13:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 静听溪流 于 2023-4-5 11:01 编辑

首先来个109字符,有点小瑕疵的公式
  1. =INDEX(A2:A25,MOD(SMALL(RANDBETWEEN(9^(A2:A25=""),9)/1%+ROW(1:24),MOD(ROW()-RIGHT(NOW()),6)+{1,7,13,19}),25))
复制代码
169字符:
  1. =INDEX(A2:A25,MOD(SMALL((MOD(SMALL(RIGHT(NOW())+RANDBETWEEN(9^(A2:A25=""),9)*6+ROW(1:24),ROW(1:24)),6)&RANDBETWEEN(9^(A2:A25=""),9))/1%+ROW(1:24),ROW()*4-{7,6,5,4}),25))
复制代码
143字符
  1. =INDEX(A2:A25,MOD(SMALL((ROW(1:24)>18)/1%%+RIGHT(LARGE(-(N(A2:A25="")&RIGHT(ROW(4:27)/NOW())&ROW(26:49)),ROW(1:24)),3),ROW()+{-1,5,11,17}),25))
复制代码
132字符:
  1. =INDEX(A2:A25,MOD(SMALL(RANDBETWEEN(9^(A2:A25=""),9)+ROW(1:24)%,MOD(SMALL(RIGHT(NOW()/ROW())*6+ROW(),ROW()-1),6)+{1,7,13,19}),1)/1%)
复制代码
132字符:
  1. =INDEX(A2:A25,MOD(SMALL(RANDBETWEEN(9^(A2:A25=""),9)*25+ROW(1:24),MOD(SMALL(RIGHT(NOW()/ROW())*6+ROW(),ROW()-1),6)+{1,7,13,19}),25))
复制代码




评分

16

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-11 14:44 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
=INDEX(A:A,MOD(SMALL(SMALL(IFNA(RANDBETWEEN(X2:X25+1,9)/1%+ROW(INDIRECT("2:"&SUM(N(A:A<>"")))),999),ROW(1:6)+{0,6,12,18})+RANDBETWEEN(W2:W7+1,9)/1%+{1,2,3,4}/1%%,ROW(1:6)+{0,6,12,18}),100))

评分

5

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-11 15:38 | 显示全部楼层
本帖最后由 小書生 于 2023-4-2 08:09 编辑


区域数组,选中 答案区域 按三键,注意手法!!
  1. =INDEX(A2:A25,MOD(SMALL(RANDBETWEEN(9^(A2:A25=""),9)+ROW(1:24)%,RIGHT(SMALL(RIGHT(ROW()*NOW())+ROW()%,ROW()-1))+{-1,5,11,17}),1)/1%)
复制代码



区域数组,选中
答案区域 按三键,注意手法!!
  1. =INDEX(A2:A25,MOD(SMALL(RANDBETWEEN(9^(A2:A25=""),9)+ROW(1:24)%,MOD(ROW()-RIGHT(NOW()),6)+{1,7,13,19}),1)/1%)
复制代码



365函数写一条
  1. =SORTBY(WRAPCOLS(SORTBY(A2:A25,RANDARRAY(24)/(A2:A25>"")),6),RANDARRAY(6))
复制代码


评分

14

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-11 16:00 来自手机 | 显示全部楼层
绊成ρìи 发表于 2023-3-11 14:44
=INDEX(A:A,MOD(SMALL(SMALL(IFNA(RANDBETWEEN(X2:X25+1,9)/1%+ROW(INDIRECT("2:"&SUM(N(A:A"")))),999),RO ...

=INDEX(A:A,MOD(SMALL(IFNA(RANDBETWEEN(X2:X25+1,9)/1%+ROW(INDIRECT("2:"&SUM(N(A:A<>"")))),999),MOD(SMALL(RANDBETWEEN(W2:W7+1,9)*99+ROW(1:6),ROW(1:6)),99)+{0,6,12,18}),100))

评分

5

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-11 16:12 | 显示全部楼层
本帖最后由 sayhi95 于 2023-3-29 11:02 编辑

重在参与
  1. =SORTBY(WRAPCOLS(SORTBY(A2:A25,RANDARRAY(24)+(A2:A25="")),6),RANDARRAY(6))
复制代码
2023-03-18 18:32再交个低版本
  1. =INDEX(A2:A25,MOD(SMALL((RANDBETWEEN(ROW(1:24)/9,9)+9^(A2:A25=""))/1%+ROW(1:24),{-1,5,11,17}+RIGHT(SMALL(RANDBETWEEN(ROW(1:6),9)/1%+ROW(),ROW(1:6)),2)),100))
复制代码
再砍几个,太艰难了
  1. =INDEX(A2:A25,RIGHT(LARGE((LEN(A2:A25)&RANDBETWEEN(N(+A2:A25),9))/1%+ROW(1:24),{-1,5,11,17}+RIGHT(LARGE(-(RANDBETWEEN(ROW()%,9)&ROW()),ROW()-1))),2))
复制代码

这个在行位置随机上不知道会不会差点,看起来好像还行
  1. =INDEX(A2:A25,RIGHT(LARGE((LEN(A2:A25)&RANDBETWEEN(N(+A2:A25),9))/1%+ROW(1:24),{-1,5,11,17}+RIGHT(LARGE(-(RANDBETWEEN(ROW(),9)&ROW()),ROW()-1))),2))
复制代码

评分

14

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-12 13:56 | 显示全部楼层
本帖最后由 江山社稷 于 2023-3-13 16:39 编辑
  1. =INDEX(A2:A25,MOD(SMALL(RANDBETWEEN(ROW(1:24)^0,99)^(ROW(2:25)>19)/1%+SMALL(RANDBETWEEN(99^(A2:A25=""),99)+ROW(1:24)%,ROW(1:24)),COLUMN()*6-ROW()-16),1)/1%)
复制代码
2
  1. =INDEX(A2:A25,MOD(SMALL(RANDBETWEEN(1,9^(ROW(1:24)>18))/1%+SMALL(RANDBETWEEN(25^(A2:A25=""),25)+ROW(1:24)%,ROW(1:24)),COLUMN()*6-ROW()-16),1)/1%)
复制代码

评分

12

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-12 14:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 太阳之子 于 2023-3-14 20:41 编辑
  1. =INDEX($A:$A,MOD(LARGE(IF((COUNTIF($C2:C9,$A2:$A25)=0)+(COLUMN()=7)*($A2:$A25=""),RANDBETWEEN(ROW(1:24),32))/1%+ROW(2:25),ROW()-1),50))
复制代码

  1. =INDEX($A:$A,DAY(LARGE(--IF((COUNTIF($C:C,$A2:$A25)=0)+(COLUMN()=7)*($A2:$A25=""),RANDARRAY(24,,1,9,1)&-ROW(2:25)),ROW()-1)))
复制代码


列数组,横拉.  第二个是365版。

评分

11

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-12 20:37 | 显示全部楼层
D2
  1. =IFERROR(INDEX($A:$A,SMALL(IF(COUNTIF($C$2:C$7,OFFSET($A$2,,,25-$B$1))+COUNTIF(D$1:D1,OFFSET($A$2,,,25-$B$1))=0,ROW(INDIRECT("1:"&25-$B$1))),RANDBETWEEN(1,32-$B$1+(COLUMN(A1)=4)*($B$1-1)-6*COLUMN(A1)-ROW(A1)))+1),"")
复制代码
,数组三键,下拉、右拉。

评分

9

查看全部评分

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

本版积分规则

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

GMT+8, 2024-12-23 09:08 , Processed in 0.038170 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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