ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [第103期]巧译电文[已总结]

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-3-7 18:38 | 显示全部楼层 |阅读模式
本帖最后由 delete_007 于 2014-5-9 16:52 编辑

总结帖见20楼。
背景:
    我军方电台费尽艰辛,截获了敌军的一批电文。据情报显示,这批电文均为6位数字密码,是敌方人员登录QQ、微信、微博、EH论坛等等的凭证。为了尽快破译电文,获取密码,给予敌人毁灭性的打击,于是发动广大EH会员,群策群力,希望能以最快的速度完成任务。

说明:
  1.根据密码本翻译截获的电文
  2.所有译文均为6位数字,密码本无优先级,以译出6位数字为准
  3.无论如何都有部分字符无法翻译的电文是干扰电文,译文为空。如A9
  4.译文不足6位数字的电文是干扰电文,译文为空。如A5
  5.每条电文都不可能有多余的字符,所有字符都必须翻译
  例:我爱上EH玩EXCEL
            如颜色所示,可以翻译成738548,所有字符均有翻译且正好6位
         上EH玩EXCEL
            如果按上述颜色翻译,为1298578,为7位数,不满足要求。

要求:
  1.纯函数题,不允许VBA、定义名称、辅助单元格
  2.不限定03版本,可使用高版本函数
  3.B2公式下拉至B13,或B2:B13多单元格数组公式
  4.公式完成之后,如无误,可以点击测试按钮进行测试                  
      提醒:测试程序并不完善,不能测试所有情况,只供参考
      本想更新测试程序,但可能会泄露答题思路,只好作罢,后期由我测试
  5.欢迎取巧

评分:
  1.公式长度(含等号)<=400字符,获1技术分
  2.公式长度(含等号)<=300字符,获2技术分
  3.公式长度(含等号)<=230字符,获3技术分
  4.精彩答案可获4技术分






竞赛日期:2014-3-8至2014-4-8


该贴已经同步到 delete_007的微博



单选投票, 共有 22 人参与投票

投票已经结束

72.73% (16)
18.18% (4)
9.09% (2)
0.00% (0)
您所在的用户组没有投票权限

本帖子中包含更多资源

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

x

点评

似乎有一行代码有问题: CodeBook = Range("F2:G19")  发表于 2014-3-7 21:03

评分

8

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-3-13 13:32 | 显示全部楼层
本帖最后由 delete_007 于 2014-4-2 15:09 编辑

我来打头炮了,不知是否能响一下!
B2=TEXT(MAX(--TEXT(0&SUBSTITUTE(MMULT(SUMIF(F:F,MID(A2,MMULT(INT(MOD(ROW($1:$729)-1,3^{7,6,5,4,3,2})/3^{6,5,4,3,2,1})+1,N(ROW($1:$6)<COLUMN(B:G))),INT(MOD(ROW($1:$729)-1,3^{6,5,4,3,2,1})/3^{5,4,3,2,1,0}+1)),G:G),10^{5;4;3;2;1;0}),0,),"[<111111]!0")),"0;;")
  (连等号 计254 字)

补充内容 (2014-4-2 12:36):
  1. =TEXT(MAX((MMULT(INT(MOD(ROW($1:$729)-1,3^{6,5,4,3,2,1})/3^{5,4,3,2,1,0}+1),ROW($1:$6)^0)=LEN(A2))*TEXT(0&SUBSTITUTE(MMULT(SUMIF(F:F,MID(A2,MMULT(INT(MOD(ROW($1:$729)-1,3^{7,6,5,4,3,2})/3^{6,5,4,3,2,1})+1,N(ROW($1:$6)<COLUMN(B:G))),INT(MOD(ROW($1:$729)-1,3^{6,5,4,3,2,1})/3^{5,4,3,2,1,0}+1)),G:G),10^{5;4;3;2;1;0}),0,),"[<111111]!0")),"0;;")
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-3-13 15:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 delete_007 于 2014-3-14 13:50 编辑
  1. =TEXT(MIN(MMULT(IFERROR(MOD(MATCH(MID(A2&1,1+MMULT(MOD(INT(ROW(1:729)/3^COLUMN(A:F)*3),3)+1,1+(ROW($1:$6)<COLUMN(A:F)))-LEN(A2),MOD(ROW(1:729)/3^COLUMN(A:F)*3,3)+1),F:F,)-2,9)+1,10^6),10^{5;4;3;2;1;0})),"[>999999] ")
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-3-13 17:03 | 显示全部楼层
本帖最后由 delete_007 于 2014-4-2 15:10 编辑

B2数组公式,291字符。
先贴个答案出来再慢慢研究。
  1. =TEXT(SUM(TEXT(SUBSTITUTE(MMULT(SUMIF($F$2:$F$19,MID(A2,MMULT(INT(MOD((ROW($A$1:$A$729)-1)/3^{5,4,3,2,1,0},3))+1,N(ROW($A$1:$A$6)<COLUMN($A$1:$F$1)))+1,INT(MOD((ROW($A$1:$A$729)-1)/3^{5,4,3,2,1,0},3))+{1,1,1,1,1,5}),$G$2:$G$19),10^{5;4;3;2;1;0}),0,),"[>111110]0;!0;!0;!0")/3),"[>111110]0;;")
复制代码


补充内容 (2014-3-25 09:41):
262字符
=TEXT(MAX(--(0&SUBSTITUTE(MMULT(SUMIF($F$2:$F$19,MID(A2,MMULT(INT(MOD((ROW($A$1:$A$729)-1)/3^{5,4,3,2,1,0},3))+1,N(ROW($A$1:$A$6)<COLUMN($A$1:$F$1)))+1,MOD((ROW($A$1:$A$729)-1)/3^{5,4,3,2,1,0},3)+{1,1,1,1,1,5}),$G$2:$G$19),10^{5;4;3;2;1;0}),0,))),"[>111110]0;;")
才发现补充内容没帖完....

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-3-14 22:50 | 显示全部楼层
本帖最后由 wlc5201130 于 2014-3-17 09:17 编辑

先上个长的吧 376字符,在慢慢简化。
=TEXT(MAX(--(0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LOOKUP(--LEFT(0&MMULT((MOD(INT((ROW($1:729)-1)/3^(6-COLUMN(A:F))),3)+1)*10^{5,4,3,2,1,0},ROW($1:$6)^0),COLUMN(A:F)),ROW($1:333333)-1,MMULT(--(0&MID(ROW($1:333333),COLUMN(A:F),1)),ROW($1:$6)^0)),MOD(INT((ROW($1:729)-1)/3^(6-COLUMN(A:F))),3)+1),F$2:F$19,),)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))),"[>111111]0;")
数组
测试等了15分钟。真漫长,估计是我电脑问题吧。
简化下333字符
=TEXT(MAX(--(0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&MMULT((MOD(INT((ROW($1:729)-1)/3^(6-COLUMN(A:F))),3)+1)*10^{5,4,3,2,1,0},ROW($1:$6)^0),COLUMN(A:F)),2,"11"),3,"111")),MOD(INT((ROW($1:729)-1)/3^(6-COLUMN(A:F))),3)+1),F$2:F$19,),)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))),"[>111111]0;")

329字符
=TEXT(MAX(--(0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&MMULT((MOD(INT((ROW($1:729)-1)/3^(6-COLUMN(A:F))),3)+1)*10^{5,4,3,2,1,0},ROW($1:$6)^0),COLUMN(A:F)),2,"11"),3,"111")),MOD(INT((ROW($1:729)-1)/3^(6-COLUMN(A:F))),3)+1),F:F,)-1,)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))),"[>99999]0;")

317字符
=TEXT(MAX(--(0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&MMULT((MOD(INT(ROW($2:729)/3^(6-COLUMN(A:F))),3)+1)*10^{5,4,3,2,1,0},ROW($1:$6)^0),COLUMN(A:F)),2,11),3,111)),MOD(INT(ROW($2:729)/3^(6-COLUMN(A:F))),3)+1),F:F,)-1,)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))),"[>99999]0;")

以上公式情况好像都有些问题,假如是“我我我我我我我我”超过7的话,还会显示6位的编码。故修改下。
又变成了389字符了,运算速度还行。
=TEXT(MAX((0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&MMULT((MOD(INT(ROW($1:729)/3^(6-COLUMN(A:F))),3)+1)*10^{5,4,3,2,1,0},ROW($1:$6)^0),COLUMN(A:F)),2,11),3,111)),MOD(INT(ROW($1:729)/3^(6-COLUMN(A:F))),3)+1),F:F,)-1,)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))*(MMULT((MOD(INT(ROW($1:729)/3^(6-COLUMN(A:F))),3)+1),ROW($1:$6)^0)=LEN(A2))),"[>1E5]0;")

简化  316字符,速度比较慢
=TEXT(MAX((0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&ROW($111111:333333),COLUMN(A:F)),2,11),3,111)),MID(ROW($111111:333333),COLUMN(A:F),1)),F:F,)-1,)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))*(MMULT(--MID(ROW($111111:333333),COLUMN(A:F),1),ROW($1:$6)^0)=LEN(A2))),"[>1E5]0;")

308字符 速度慢
=TEXT(MAX((0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&ROW(1:333333),COLUMN(A:F)),2,11),3,111)),--(0&MID(ROW(1:333333),COLUMN(A:F),1))),F:F,)-1,)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))*(MMULT(--(0&MID(ROW(1:333333),COLUMN(A:F),1)),ROW($1:$6)^0)=LEN(A2))),"[>1E5]0;")



293字符
=TEXT(MAX((0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&ROW(A:A),COLUMN(A:F)),2,11),3,111)),--(0&MID(ROW(A:A),COLUMN(A:F),1))),F:F,)-1,)),)*10^{5,4,3,2,1,0},ROW($1:$6)^0),0,))*(MMULT(--(0&MID(ROW(A:A),COLUMN(A:F),1)),ROW($1:$6)^0)=LEN(A2))),"[>1E5]0;")
数组
速度更慢。公式应该没有问题的,不过下拉时提示。“试图计算1个或多个公式时,Excel资源不足,因此,无法计算这些公式”,关键引用了ROW(A:A)的关系。我用的是2007版本,不知道漫步满足要求。不满足就以下面的300字符为准吧。



正好300字符
=TEXT(MAX((0&SUBSTITUTE(MMULT(IFERROR(N(OFFSET(G$1,MATCH(MID(A2,LEN(SUBSTITUTE(SUBSTITUTE(LEFT(0&ROW(1:333333),COLUMN(A:F)),2,11),3,111)),0&MID(ROW(1:333333),COLUMN(A:F),1)),F:F,)-1,)),)*10^{5,4,3,2,1,0},ROW(1:6)^0),0,))*(MMULT(--(0&MID(ROW(1:333333),COLUMN(A:F),1)),ROW(1:6)^0)=LEN(A2))),"[>1E5]0;")
数组下拉。




本帖子中包含更多资源

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

x

点评

跟你的公式有关,ROW(1:333333)数组有点巨大了。  发表于 2014-3-14 23:57

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-3-17 12:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
允许用自定义函数吗

点评

纯函数解题,自定义函数属于VBA了。  发表于 2014-3-17 12:58

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-3-20 00:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
B2数组=TEXT(MAX(--(0&SUBSTITUTE(MMULT(IFERROR(MOD(MATCH(MID(A2,MMULT(INT(MOD((ROW($1:$729)-1)/3^COLUMN($A:$F)*3,3))+1,--(COLUMN($A:$F)>ROW($1:$6)))+1,INT(MOD((ROW($1:$729)-1)/3^COLUMN($A:$F)*3,3))+{1,1,1,1,1,4}),F$2:F$19,)-1,9)+1,0),10^(6-ROW($1:$6))),"0",))),"[>99999]0;")

密码本密码不能大于3位,译文只能按题目1-9顺序排列,否则公式无效。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-4-2 10:55 | 显示全部楼层
本帖最后由 jsxjd 于 2014-4-2 11:02 编辑

2003有7层嵌套限制,据说高版本要宽松得多,只好“盲打拼凑”了一个9层嵌套。本可再缩一层,可还差一层,只好放弃。
B2数组公式,下拉,296 Chars
  1. =TEXT(MAX((MMULT(MOD(INT((ROW($1:$729)-1)/3^COLUMN(A:F)*3),3)+1,ROW($1:$6)^0)=LEN(A2))*(0&SUBSTITUTE(MMULT(SUMIF(F$2:F$19,MID(A2,1+MMULT(MOD(INT((ROW($1:$729)-1)/3^COLUMN(A:F)*3),3)+1,N(ROW($1:$6)>COLUMN(A:F))),MOD(INT((ROW($1:$729)-1)/3^COLUMN(A:F)*3),3)+1),G$2),10^ROW($1:$6)),0,))),"[>1e5]0;")
复制代码
烦请7版测试一下!

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-9 12:49 | 显示全部楼层
敌人已知悉我方截获其电文,现已更改密码,电文已成废纸,尚未译出者无须再费神了。

=========答题截止时间到,先开贴,总结评分稍候=========

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-9 17:01 | 显示全部楼层
评分建议如下,如有任何疑问或问题请直接与我联系。




本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-11-21 18:40 , Processed in 0.050222 second(s), 24 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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