ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 在指定区域生成指定数量的指定字符

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-11-30 14:23 | 显示全部楼层 |阅读模式
希望按照“示例”显示方式,根据“说明”要求,在B-P列随机位置生成指定数量的指定字符,最好占满B-P列,中间可以显示空值,每行的指定字符和数量都一样,谢谢各位
image.png image.png
1.jpg
image.png

生成指定数量字符.rar

8.83 KB, 下载次数: 16

TA的精华主题

TA的得分主题

发表于 2023-11-30 14:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=LET(M,TAKE(SORTBY({"A";"B";"C"},RANDARRAY(3,1)),1),
N,TAKE(SORTBY({"A";"B";"C"},RANDARRAY(3,1)),-1),
X,REPT("A",3-SUM((HSTACK(M,N)="A")*1))&REPT("B",4-SUM((HSTACK(M,N)="B")*1))&REPT("C",2-SUM((HSTACK(M,N)="C")*1))&REPT(" ",6),
Y,SORTBY(MID(X,SEQUENCE(,LEN(X)),1),RANDARRAY(1,13)),
RR,HSTACK(M,Y,N),
RR
)

TA的精华主题

TA的得分主题

发表于 2023-11-30 15:14 | 显示全部楼层
本帖最后由 橒♂蝣 于 2023-11-30 15:17 编辑

=LET(A,TEXTSPLIT(Q3,"个",","),
M,TAKE(SORTBY(TAKE(A,,-1),RANDARRAY(ROWS(A),1)),1),
N,TAKE(SORTBY(TAKE(A,,-1),RANDARRAY(ROWS(A),1)),-1),
B,MMULT(1*(HSTACK(M,N)=TAKE(A,,-1)),SEQUENCE(COLUMNS(A))^0),
X,VSTACK(HSTACK(TAKE(A,,-1),--TAKE(A,,1)-B),HSTACK(" ",15-SUM(--TAKE(A,,1)))),
Z,CONCAT(REPT(TAKE(X,,1),TAKE(X,,-1))),
Y,SORTBY(MID(Z,SEQUENCE(,LEN(Z)),1),RANDARRAY(1,13)),
RR,HSTACK(M,Y,N),RR
)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-11-30 15:45 | 显示全部楼层
供参考

123.png
参考.zip (8.57 KB, 下载次数: 13)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-11-30 15:46 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-11-30 15:56 | 显示全部楼层
  1. =LET(t,TEXTSPLIT(Q3,,","),m,TEXTBEFORE(t,"个"),a,VSTACK(t,(15-SUM(--m))&"个"&"#"),b,DROP(REDUCE("",a,LAMBDA(x,y,HSTACK(x,EXPAND(TEXTAFTER(y,"个"),,TEXTBEFORE(y,"个"),TEXTAFTER(y,"个"))))),,1),SUBSTITUTE(SORTBY(b,RANDARRAY(,15)),"#",""))
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-11-30 16:29 | 显示全部楼层
本帖最后由 hcm19522 于 2023-11-30 16:31 编辑

區域數組公式 反白 OK 但結果不對 求解=LOOKUP(RIGHT(SMALL(RANDBETWEEN(ROW(1:15)^0,99)/1%+ROW($1:$15),COLUMN(A:O)),2)-1,SUBTOTAL(9,OFFSET(Q3,,,,{1;2;3;4})),R$2:U$2)&""
12998.png

TA的精华主题

TA的得分主题

发表于 2023-11-30 16:39 | 显示全部楼层
hcm19522 发表于 2023-11-30 16:29
區域數組公式 反白 OK 但結果不對 求解=LOOKUP(RIGHT(SMALL(RANDBETWEEN(ROW(1:15)^0,99)/1%+ROW($1:$15),C ...

365没问题,版本原因吧
屏幕截图 2023-11-30 163826.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-11-30 19:14 | 显示全部楼层
这个问题非常适合用递归函数来解决,确保首尾不出现空。
先定义名称fx
公式输入
=LAMBDA(q,n,LET(all,TEXTSPLIT(q,",",,1),a,--TEXTBEFORE(all,"个"),b,TEXTAFTER(all,"个"),e,EXPAND(DROP(REDUCE("",b,LAMBDA(x,y,HSTACK(x,EXPAND(y,1,HLOOKUP(y,VSTACK(b,a),2,),y)))),,1),1,n,""),s,SORTBY(e,RANDARRAY(1,n,1,n,0)),IF(AND(TAKE(s,,1)<>"",TAKE(s,,-1)<>""),s,fx(q,n))))

这样就相当于自定义了一个函数  =fx(q,n)   有两个参数:q 代表类似Q列单元格的样式(如:"3个A,4个B,2个C" 这样的字符串,或直接引用Q3),n代表列数,如:15
以本例B3单元格为例,输入
=fx(Q3,15)
然后下拉
image.png

生成指定数量字符--递归解决方案.zip

9.86 KB, 下载次数: 0

TA的精华主题

TA的得分主题

发表于 2023-11-30 20:30 | 显示全部楼层
看一看,对不对?

生成指定数量字符.zip

10.41 KB, 下载次数: 1

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

本版积分规则

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

GMT+8, 2024-4-28 01:24 , Processed in 0.041293 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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