ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [第61期]列出所有最长字符串

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-6-2 21:24 | 显示全部楼层 |阅读模式
本帖最后由 wangg913 于 2011-10-21 22:33 编辑

求最长对称字符串
1、用下拉公式完成,不能用辅助列,名称
2、列出所有最长且对称的字符串,区分大小写
具体的说,首先是字符数最大,然后是对称,以下字符串都是对称的:AA,1W1,7gg7,1 5 1。
3、公式必须在2003版本下运行正常
4、为了加快公式运行速度,所给字符串长度都<60字符,数据区域为A1:A8。
答题必须同时具备以下要求:
1、公式通用,完全正确,并且公式长度<250字,得财富10分;公式长度<220字,得技术1分;精彩答案得技术2分。
2、不使用VBA,公式结果统一为文本型。
其它说明:
1、为减轻审贴的工作量,回复时,每人只能占用一层楼,只在固定的楼层编辑修改,勿反复回复。
2、回复终止日期至6月22日(之后回复者不评分)
3、答题的E友,请把附件也一并发上来,以便更快地检查公式的正误和通用性。
没有出过竞赛题,要想考虑周到,还真不容易,今修改一下,应该比较容易理解。

[ 本帖最后由 dg831451 于 2010-7-8 16:55 编辑 ]

本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-6-3 07:46 | 显示全部楼层

回复 1楼 wddn 的帖子

班门弄斧一下,206个字符:
刚看到版主修改说明,重新更改附件:

[ 本帖最后由 shengyulon 于 2010-6-15 16:24 编辑 ]

本帖子中包含更多资源

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

x

TA的精华主题

TA的得分主题

发表于 2010-6-4 18:59 | 显示全部楼层
=INDEX(A:A,SMALL(IF((MMULT(--(EXACT(RIGHT(LEFT(A$1:A$8,COLUMN($A:$BG))),LEFT(RIGHT(A$1:A$8,COLUMN($A:$BG))))),ROW($1:$59)^0)=59)*(LEN(A$1:A$8)=MAX(LEN(A$1:A$8))),ROW($1:$8),4^8),ROW()))&""




[ 本帖最后由 东方之珠0 于 2010-6-5 19:58 编辑 ]

本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-6-4 21:32 | 显示全部楼层
答案在出题前就有了,看答题的人并不多。
=INDIRECT("A"&RIGHT(10^7+MMULT(LARGE((MMULT(1-(CODE(MID(0&A$1:A$8&0,COLUMN(A:BJ),1)&0)=CODE(RIGHT(0&A$1:A$8&0,COLUMN(A:BJ)))),ROW(1:62))=0)*LEN(A$1:A$8&0)/1%+ROW($1:$8),ROW()^{0,1,1}),{-10;10;1}^5),2))&""
204个字符,公式有一个缺陷,就是A$1:A$8范围内没有一个对称的字符串(空单元格算对称的字符串),公式会出错,如果引用$1:A$9就能解决问题了,本来是index,因为不能用A:A,所以改为indirect。如果能用多单元公式字符能到200个以内。
答案顺序有点不同。
相同顺序,附件就不修改了。
=INDIRECT("A"&RIGHT(10^7-MMULT(LARGE((MMULT(1-(CODE(MID(0&A$1:A$8&0,COLUMN(A:BJ),1)&0)=CODE(RIGHT(0&A$1:A$8&0,COLUMN(A:BJ)))),ROW(4:65))=0)*LEN(A$1:A$8&0)/1%-ROW($1:$8),ROW()^{0,1,1}),{10;-10;1}^5),2))&""


[ 本帖最后由 冻豆腐 于 2010-6-6 23:36 编辑 ]

本帖子中包含更多资源

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

x

TA的精华主题

TA的得分主题

发表于 2010-6-5 17:49 | 显示全部楼层
参与一下。
=INDIRECT("A"&SMALL(MMULT(SMALL((MMULT(--(CODE(RIGHT(A$1:A$8,COLUMN(A:BH)))=CODE(MID(A$1:A$8,COLUMN(A:BH),1)&A$1:A$8)),ROW(1:60)^0)=60)*LEN(A$1:A$8)+ROW($1:$8)*{0,100},ROW($2:$9)^{0,1}+7)-ROW($1:$8)*{0,100},{1;-1})*9+ROW($1:$8),ROW()))&""
==============================================================================
简化一下。
=INDIRECT("A"&SUM(INT((LARGE((MMULT(--(CODE(RIGHT(A$1:A$8,COLUMN(A:BH)))=CODE(MID(A$1:A$8,COLUMN(A:BH),1)&A$1:A$8)),1^ROW(1:60))=60)*LEN(A$1:A$8)-ROW($1:$8)%,ROW()^{0,1})+{1,0})*{1,100})*{100,-1}))&""
==============================================================================
不能判断是否有对称字串。长度197。
=INDIRECT("A"&SUM(CEILING(LARGE(((MMULT((CODE(RIGHT(1&A$1:A$8&1,COLUMN(A:BI)))-CODE(MID(1&A$1:A$8,COLUMN(A:BI),1)&1))^2,ROW(1:61))=0)*LEN(A$1:A$8)+2)/1%-ROW($1:$8),ROW()^{0,1}),{100,1})*{1,-1}))&""
==============================================================================
这个应该可以判断是否有对称字串,并显示。长度208。
=INDIRECT("a"&SUM(INT(LARGE((MMULT((CODE(RIGHT(1&A$1:A$8&1,COLUMN(A:BI)))-CODE(MID(1&A$1:A$8,COLUMN(A:BI),1)&1))^2,ROW(1:61))=0)*LEN(A$1:A$8)-ROW($1:$8)%,ROW()^{0,1,0})*10^{0,2,-2}+{2,0,1})*{100,-1,-100}))&""

[ 本帖最后由 wangg913 于 2010-6-11 10:48 编辑 ]

本帖子中包含更多资源

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

x

TA的精华主题

TA的得分主题

发表于 2010-6-7 16:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
314个字符啊,完全是字符的堆砌。
区域数组。
引用全列。

[ 本帖最后由 liuguansky 于 2010-6-8 18:58 编辑 ]

本帖子中包含更多资源

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

x

TA的精华主题

TA的得分主题

发表于 2010-6-8 23:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请问一下版主老师,"也不能整列引用(只能引用A$1:A$8)”对这句不太理解,如果引用a1:a9算不算错呢?什么叫不能整列引用,COLUMN(A:BH)这样的算不算呢?如果不能这样,那改成COLUMN(A1:BH1)吧,不知道理解对不对。
还有既对称,又最长的,是不是一定要按单元格区域出现的先后来排序?

心里忐忑不安,还是交上我的答案试试吧。

[ 本帖最后由 moon2778 于 2010-6-11 15:39 编辑 ]

本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-6-9 11:14 | 显示全部楼层

回复 1楼 wddn 的帖子

嵌套太多,先来个思路吧。有空认真简化简化。
246=INDEX(A:A,LARGE((MMULT(-ISERR(FIND(MID(A$1:A8,COLUMN(A:BH),1),RIGHT(A$1:A8,COLUMN(A:BH)))),ROW(1:60)^0)=0)*(MAX(MMULT(-ISERR(FIND(MID(A$1:A8,COLUMN(A:BH),1),RIGHT(A$1:A8,COLUMN(A:BH)))),ROW(1:60)^0)+LEN(A$1:A8))=LEN(A$1:A8))*ROW($1:8),ROW()))&""

TA的精华主题

TA的得分主题

发表于 2010-6-10 15:35 | 显示全部楼层
现在是211个字符,先上传有时间简化
重新看了一下,好像没什么可以减了,如果把999改成9,连等号有209个字符,呵呵...太勉强了。
=INDIRECT("A"&SMALL(IF((LEN(A$1:A$8)=MAX(LEN(A$1:A$8)))*MMULT(--(CODE(MID(A$1:A$8&REPT(0,60),COLUMN(A:BH),1))=CODE(LEFT(RIGHT(REPT(0,60)&A$1:A$8,COLUMN(A:BH)),1))),ROW($1:$60)^0)=60,ROW($1:$8),9),ROW(1:1)))&""

[ 本帖最后由 jxrbz 于 2010-6-11 18:06 编辑 ]

本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-6-10 20:44 | 显示全部楼层
刚参加完数组培训班,参与一下,对于第二条要求中提到的最长且对称的字符串不知是否理解有误,一般逻辑应该为列出所有对称中字符最长的,但说明中提到首先是字符数最大,然后是对称,附件中两种方法大同小异,只是在判断是否对称上方法略有不同,两个公式字符数也差不多,不过好像都刚刚小于220个字符,不知能不能混1分。另想用多单元格数组公式完成(不过要求中好像说是用下拉公式完成,不知这样算不算违规?),不过在OFFSET外层套T时嵌套层次超限,可惜!否则字符数还可以更少一些。

本帖子中包含更多资源

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

x

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-21 19:02 , Processed in 0.038201 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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