ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [第118期] 求字母组合和字母组合出现的次数[已总结]

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-3-28 10:47 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 delete_007 于 2017-5-9 16:01 编辑

总结位于14楼
一、题目说明:
1.A列每个单元格为1-6个大写字母(A-F),字母没有一定顺序,但不会有重复的。
2.求三个字母组合及其出现的次数。(6字母选三的组合共有20种)
3.例如A3单元格是DCFAB,ABC三字母都有(不考虑顺序),就算ABC出现了1次。
4.D列和E列,可用2个列数组公式,不得使用下拉公式。
5.纯函数题,不得使用辅助列,E列可用D结果。函数版本不限。(365版本除外)。

二、评分规则:
1.每个公式符合要求且结果正确给1分(D列排列顺序需与G列的效果完全相同);
2.两个公式都符合要求且结果正确,字符数加起来<=280可加1分。

竞赛日期:2017年3月28日 至 2017年4月30日





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

8

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-3-28 11:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 delete_007 于 2017-3-28 11:26 编辑

D列公式:
第一版(155字符):
  1. =SUBSTITUTE(MID(DEC2HEX(LARGE(--TEXT(MMULT(MOD(INT(ROW(1:63)/2^COLUMN(A:F)*2),2),16^7+16^{5;4;3;2;1;0}*ROW(10:15)),"[>1e9]!0;[>8e8];!0"),ROW()-1)),3,6),0,)
复制代码

第二版(146字符)不满足顺序要求
  1. =DEC2HEX(MMULT(10+MID(BASE(MODE.MULT(IF(MID(BASE(ROW(78:207),6),{1,2},1)>MID(BASE(ROW(78:207),6),{2,3},1),ROW(78:207))),6),{1,2,3},1),16^{0;1;2}))
复制代码

第三版(120字符):
  1. =DEC2HEX(HEX2DEC(MODE.MULT(IF(MMULT(--TEXT(MID(ROW(1:456)/1%,{1,2,3},1),"[>6]!0"),{-1,0;1,-1;0,1})>0,ROW(1:456))))+2457)
复制代码

第四版(111字符):
  1. =BASE(HEX2DEC(MODE.MULT(IF(MID(ROW(1:456),{1,2},1)<TEXT(MID(ROW(1:456),{2,3},1),"[<7];"),ROW(1:456))))+2457,16)
复制代码


E列公式(120字符):
  1. =MMULT(N(MMULT(1-ISERR(FIND(CHAR(COLUMN(BM:BR)),D2:D21)),1-ISERR(FIND(CHAR(ROW(65:70)),TRANSPOSE(A2:A21))))=3),1^Z2:Z21)
复制代码

评分

6

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-3-28 15:30 | 显示全部楼层
  1. D列整列公式=DEC2HEX(MODE.MULT(IF(MID(DEC2HEX(ROW(2748:3567)),{1,2},1)<MID(DEC2HEX(ROW(2748:3567)),{2,3},1),ROW(2748:3567))))
  2. E列数组公式=SUM(N(MMULT(-ISERR(FIND(MID(D2,{1,2,3},1),A$2:A17)),B1:B3+1)=0))
复制代码

补充内容 (2017-5-2 12:08):
E列公式改下=MMULT(N(MOD(INT(TRANSPOSE(10^(MMULT(LOG(CODE(MID(A2:A17,COLUMN(A:F),1)&" ")),C2:C7+1)))),INT(10^(MMULT(LOG((CODE(MID(D2:D21,{1,2,3},1)))),{1;1;1}))))=0),C2:C...

评分

5

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-3-28 15:58 | 显示全部楼层
本帖最后由 sayhi95 于 2017-4-10 11:43 编辑

两个公式,D列公式1(这样是不是违规了,汗~~~)
  1. =BASE({2748;2749;2750;2751;2765;2766;2767;2782;2783;2799;3021;3022;3023;3038;3039;3055;3294;3295;3311;3567},16)
复制代码
D列公式2(好像更过分了,汗~)
  1. =MID("ABCABDABEABFACDACEACFADEADFAEFBCDBCEBCFBDEBDFBEFCDECDFCEFDEF",(ROW(1:20)-1)*3+1,3)
复制代码
D列公式3(正常的)
  1. =DEC2HEX(SMALL(IF(MMULT(N(MID(BASE(ROW(2748:3567),16),{2,3},1)>MID(BASE(ROW(2748:3567),16),{1,2},1)),{1;1})=2,ROW(2748:3567)),ROW(1:20)))
复制代码
D列公式4,用MODE.MULT有BUG的签到练习,这儿好像没问题
  1. =DEC2HEX(MODE.MULT(IF(MID(BASE(ROW(2748:3567),16),{2,3},1)>MID(BASE(ROW(2748:3567),16),{1,2},1),ROW(2748:3567))))
复制代码
E列公式1
  1. =COUNT(0/(MMULT(1-ISERR(FIND(MID(T(IF(1,OFFSET(D1,ROW(1:20),))),{1,2,3},1),A2:A17)),{1;1;1})=3))
复制代码
E列公式2
  1. =COUNT(0/(MMULT(-ISERR(FIND(MID(T(IF(1,OFFSET(D1,ROW(1:20),))),{1,2,3},1),A2:A17)),{1;1;1})=0))
复制代码
E列公式3(整列引用,汗~~~)
  1. =SUM(N(MMULT(-ISERR(FIND(MID(T(IF(1,OFFSET(D1,ROW(1:20),))),{1,2,3},1),A:A)),{1;1;1})=0))
复制代码

点评

D列这公式肯定不行。  发表于 2017-3-28 16:54

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-3-28 16:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 丢丢表格 于 2017-3-28 19:32 编辑

  1. 1.=DEC2HEX(MODE.MULT(IF(MID(DEC2HEX(ROW(2748:3567)),{2,3},1)>MID(DEC2HEX(ROW(2748:3567)),{1,2},1),ROW(2748:3567))))
  2. 2.'=COUNTIFS(A:A,"*"&LEFT(D2:D21)&"*",A:A,"*"&MID(D2:D21,2,1)&"*",A:A,"*"&RIGHT(D2:D21)&"*")
复制代码


评分

6

查看全部评分

TA的精华主题

TA的得分主题

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

=MID(TEXTJOIN("",,IF(ISERR(SEARCH(TEXT(ROW(99:456),"0\*0\*0"),"123456")),"",CHAR(MID(ROW(99:456),{1,2,3},1)+64))),ROW()*3-5,3)

=SUM(N(MMULT(-ISERR(FIND(MID(INDEX(D:D,ROW()),{1,2,3},1),A:A)),{1;1;1})=0))

评分

5

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-3-29 15:57 | 显示全部楼层
第一问:
  1. =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LARGE(MMULT(10^{5,4,3,2,1,0},IF(MMULT(COLUMN(A:F)^0,N(MOD(COLUMN(A:BL)/2^ROW(1:6)*2,2)<1))=3,ROW(1:6)*N(MOD(COLUMN(A:BL)/2^ROW(1:6)*2,2)<1),)),ROW(1:20)),0,),1,"A"),2,"B"),3,"C"),4,"D"),5,"E"),6,"F")
复制代码
第二问:
  1. =MMULT(IF(LEN(TRANSPOSE(A2:A17))-3-LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRANSPOSE(A2:A17),LEFT(D2:D21),),MID(D2:D21,2,1),),RIGHT(D2:D21),)),,1),ROW(1:16)^0)
复制代码
---------------------------------------
公式基础太差,将substitiute进行到底,就不再费脑筋换思路了。
拿到一分就心满意足了。


楼主辛苦、版主辛苦、各位公式达人辛苦!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-3-30 16:14 | 显示全部楼层
本帖最后由 kuangben8 于 2017-4-5 23:04 编辑

D2:D21区域数组公式:
  1. ={"ABC";"ABD";"ABE";"ABF";"ACD";"ACE";"ACF";"ADE";"ADF";"AEF";"BCD";"BCE";"BCF";"BDE";"BDF";"BEF";"CDE";"CDF";"CEF";"DEF"}
复制代码
我发现这样还短一些:
  1. =INDEX(BASE(ROW(2748:3567),16),{1;2;3;4;18;19;20;35;36;52;274;275;276;291;292;308;547;548;564;820})
复制代码







既然7神说没有意义,那就重来。。。。终于发现了一点规律   D2:D21区域数组公式
  1. =BASE(SMALL(IF(MMULT(N(CODE(MID(BASE(ROW(2748:3567),16),{1,2},1))-CODE(MID(BASE(ROW(2748:3567),16),{2,3},1))<0),{1;1})=2,ROW(2748:3567)),ROW(1:20)),16)
复制代码
突然觉得code这里太多余
  1. =BASE(SMALL(IF(MMULT(N(MID(BASE(ROW(2748:3567),16),{1,2},1)<MID(BASE(ROW(2748:3567),16),{2,3},1)),{1;1})=2,ROW(2748:3567)),ROW(1:20)),16)
复制代码


E2:E21区域数组公式
  1. =SUM(N(MMULT(--ISNUMBER(FIND(MID(IF(1,OFFSET(D1,ROW(1:20),)),{1,2,3},1),A2:A17)),{1;1;1})=3))
复制代码


这样可以吗?

点评

这种应该没有问题了。  发表于 2017-4-7 15:59
D列公式用这种就没意义了。  发表于 2017-4-1 09:57

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-4-6 19:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 delete_007 于 2017-5-9 15:12 编辑

D2:D21=
  1. =SUBSTITUTE(DEC2HEX(LARGE(MOD(MMULT(--MID(DEC2BIN(ROW(1:63),6),{1,2,3,4,5,6},1),16^6+ROW(10:15)*16^{5;4;3;2;1;0}),4*16^6)-3*16^6,ROW(1:20))),0,)
复制代码

E2:E21=
  1. =MMULT(COUNTIF(A2:A21,"*"&REPLACE(REPLACE(MID(DEC2HEX(MMULT(HEX2DEC(MID(D2:D21,{1,2,3,1,2,1,3,2,1},1)),16^ROW(1:9)/16)),{1,2,3,5,6,7},3),2,0,"*"),4,0,"*")&"*"),ROW(1:6)^0)
复制代码

字符数从来没达到过要求,发放个答案再想
这个短点,E2:E21=
  1. =MMULT(IFERROR(SEARCH("*"&REPLACE(REPLACE(D2:D21,2,0,"*"),4,0,"*"),REPT(TRANSPOSE(A2:A21),3)),0),ROW(1:20)^0)
复制代码


E列公式可进一步简化:
  1. =MMULT(1-ISERR(SEARCH(REPLACE(REPLACE(D2:D21,3,,"*"),2,,"*"),REPT(TRANSPOSE(A2:A21),3))),1^Z1:Z20)
复制代码
——delete_007




评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-4-23 19:00 | 显示全部楼层
D2:D21=MID("ABCABDABEABFACDACEACFADEADFAEFBCDBCEBCFBDEBDFBEFCDECDFCEFDEF",ROW()*3-5,3)

E2:E21=MMULT(N(MMULT(1-ISERR(FIND(CHAR(COLUMN(BM:BR)),D2:D21)),1-ISERR(FIND(CHAR(ROW(65:70)),TRANSPOSE(A2:A21))))=3),ROW(1:20)^0)

点评

你的D列公式和直接在单元格输入数据没差……  发表于 2017-5-9 08:42

评分

2

查看全部评分

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

本版积分规则

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

GMT+8, 2024-7-13 21:19 , Processed in 0.065237 second(s), 21 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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