【动态数组】行业案例:辽宁福利彩票35选7

清华学弟任泽岩
清华学弟任泽岩

创作者俱乐部成员

困难如山,我有金山。

欢迎收看本期【动态数组】专题,我是学弟。

【动态数组】专题均使用动态数组的相关函数,进行一定范围内行业应用。

本期学弟带大家模拟做一份辽宁福利彩票的行业案例

【作者简介】
社区ID:清华学弟任泽岩
WPS办公软件商业讲师
- 金山办公最有价值专家(KVP)、金山办公认证讲师(KCT)、金山WPS社区优秀创作者、金山文档行业金鹰社社员、表格菁培班毕业生;
- 微博认证职场博主、微信视频号年度潜力主播、百度百科【任泽岩】词条收录;
- 中国南方航空公司十佳教员、金牌微课制作师,全国培联/培协推优大赛金奖获得者,《培训》杂志“师道匠心”全国金牌内训师称号获得者,两度获得Toastmasters国际演讲会International Speech Contest赛事冠军;
- 中国管理科学学会高级企业培训师,入选全国优秀技能型人才库。

共创作者:@新路

特别感谢新路老师在动态数组函数使用过程中对学弟的大力帮助,在此深表感谢!

辽宁福利彩票35选7,的玩法是,从1-35个数字中,选择7个数字。根据开奖结果(7红球+1蓝球)的不同,匹配不同的奖项。其他地市彩票的玩法大同小异,大家可以自行调整规则。

图片来源:辽宁福利彩票官网

想做一份模拟彩票系统,就有至少要实现3+1个功能:

功能1:可以手工或者随机选号,手工选号没什么难度,本例选择用函数进行随机选号;

功能2:开奖结果,需要手工录入;

功能3:中奖结果查询。

选装功能:参数表,中奖奖级的对应表,用于查找引用。

功能2没有难度,手工录入即可,可以随时修改:

选装功能也没有难度,作为参数表备用:

功能1,随机选号效果,使用动态数组公式:

=TAKE(SORTBY(RANDARRAY(1,35,1,35,TRUE),SEQUENCE(1,35,1,1),1),1,7)

其中,

  1. RANDARRAY(1,35,1,35,TRUE)可以生成一个1行35列的随机数组;

  1. SEQUENCE(1,35,1,1)可以生成一个1行35列的1-35数字序列;

  1. SORTBY(①,②)可以按照一定顺序重新进行排布,避免了选数的重复;

  1. TAKE(③,1,7)可以将这个列数组从前面取7列,形成一注随机35选7的彩票。

功能3,中奖结果查询,我们分开来看:

中了几个红球,使用公式:

="中"&MMULT(SIGN(IFERROR(FIND(","&$C$10:$I$10&",",","&TEXTJOIN(",",,C3:I3)&","),0)),ROW($A$1:$A$7)^0)

也是本例中最复杂也最精彩的动态数组公式,再次感谢@新路老师的指点帮助。

其中,

  1. FIND(","&$C$10:$I$10&",",","&TEXTJOIN(",",,C3:I3)&",")是用自选的号码,在中奖的号码中进行查找,返回查找的1行7列数组。需要特别注意的是,这个函数的前后都拼接了一个","(也可以替换为同一个其他字符),如果中奖号码是11、12、13、14……,那么单纯查找“1”也是能找到的。因此我们在",11,12,13,14,"中去查找"1",就找不到结果啦!一定记得,源字符串的收尾也要拼一个分隔符,单纯用TEXTJOIN以后,两端是没有分隔符的;

  1. 当无法查找的具体数值时(未中这个号码),将返回错误值,这时我们用IFERROR(①,0)来进行屏蔽;

  1. SIGN(②)是将结果返回1(中了这个号码)或者0(未中这个号码);

  1. ROW($A$1:$A$7)^0是生成一个7行1列,值均为1的数组;

  1. MMULT(③,④)是用1行7列数组去乘7行1列数组,结果为1行1列数组(即一个值),每一个未中奖的号码将折算成0,每一个中奖的号码将折算成1,结果即为中奖的红球的个数;

  1. "中"&⑤是用来匹配参数表的书写形式:

是否中蓝球,使用公式:

=IFERROR("+"&SIGN(FIND(","&$C$11&",",","&TEXTJOIN(",",,C3:I3)&",")),"")

其中,

  1. ","&TEXTJOIN(",",,C3:I3)&","用来把所有选择的数字用","连接起来,作为FIND里“待查找的字符串”,前后各拼接一个字符串的意义同前;

  1. FIND(","&$C$11&",",①)用来查找这个字符串中是否包含蓝球号码,结果可以返回任意一个正数(包含蓝球)或者错误值(不包含蓝球,即无法找到),前后各拼接一个字符串的意义同前;

  1. SIGN(②)可以生成1(包含)或者错误值(不包含);

  1. "+"&③是为了匹配参数表的书写形式:

  1. IFERROR(④,"")错误值时,返回空值。

最后使用=J3&K3,就可以实现中奖结果的表达了,没有难度。

然后是中奖情况的判断:

使用我们非常熟悉的XLOOKUP(因为参数表中奖结果在奖级的右侧,逆向查找,用XLOOKUP比VLOOKUP更为方便)

=XLOOKUP(L3:L7,P3:P10,O3:O10,"未中奖",0)

上面是动态数组的写法,也可以只写=XLOOKUP(L3,$P$3:$P$10,$O$3:$O$10,"未中奖",0),再进行下拉拖拽,注意需要使用$绝对引用。

最后,我们手工验证看一下计算结果:

结果都是正确的!

****(我是可爱的分割线)****

其实学弟蛮好奇,随机打5注的中奖概率有多高。

咱们用F9刷新下看看中奖概率,录一个动图:

除了偶尔的七等奖,从数学期望来看,中奖概率着实不高啊!

还是凭借实力研究号码走势吧,机打5注划个问号,哈哈!


最后是文档分享链接:

【金山文档】辽宁福利彩票35选7

https://kdocs.cn/l/cuHZAN79Njk4


如果你觉得今天的教程对你有帮助,欢迎在下方为我点一颗小红心💖💖💖哦!

>>> 欢迎收看清华学弟任泽岩WPS社区【个人帖子合集】 <<<

辽宁省
浏览 2570
2
23
分享
23 +1
17
2 +1
全部评论 17
 
xxp
学习
· 北京
1
回复
 
亂雲飛渡
· 广东省
回复
 
xxp
学习
· 北京
2
回复
 
西米露
打卡学习
· 山东省
1
回复
清华学弟任泽岩
清华学弟任泽岩

创作者俱乐部成员

感谢支持!
· 辽宁省
回复
 
HC.旋
跟着老师学习
· 江苏省
回复
清华学弟任泽岩
清华学弟任泽岩

创作者俱乐部成员

感谢支持!
· 辽宁省
回复
 
wps新路
wps新路

WPS函数专家

=XLOOKUP("中"&SUM(--(UNIQUE(C3:I3,1)=TRANSPOSE($C$10:$I$10)))&REPT("+1",OR($C3:$I3=$C$11)),$Q$3:$Q$10,$P$3:$P$10,"未中奖")
· 重庆
1
回复
清华学弟任泽岩
清华学弟任泽岩

创作者俱乐部成员

谢谢新路老师更为优质的解答!
· 辽宁省
1
回复
 
LZN
收藏学习
· 山东省
回复
清华学弟任泽岩
清华学弟任泽岩

创作者俱乐部成员

感谢支持!
· 辽宁省
回复
 
王俊博
王俊博

创作者俱乐部成员

认真学习
· 河北省
回复
清华学弟任泽岩
清华学弟任泽岩

创作者俱乐部成员

感谢支持!
· 辽宁省
回复
 
学无止境
谢谢,老师,得消化消化了。
· 广东省
回复
清华学弟任泽岩
清华学弟任泽岩

创作者俱乐部成员

感谢支持!
· 辽宁省
回复
 
尹俊超
尹俊超

创作者俱乐部成员

支持岩哥
· 河南省
1
回复
清华学弟任泽岩
清华学弟任泽岩

创作者俱乐部成员

感谢支持!
· 辽宁省
回复