ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的测验 > 函数与公式 > 求最长对称字符串(更新)

求最长对称字符串(更新)

作者:绿色风 分类: 时间:2022-08-18 浏览:166
楼主
donghan
将A列中对称字符串显示在B列。

【说明】
1、A列有若干连续字符串,大小写混杂。
2、为方便编写公式,假设A列单元格中字符串长度均<60字符

【要求】
1、限函数与公式完成(请注明适用版本)。
2、同一字母的大小写视为不同字符。即“A”<>“a”
3、当出现多个时,按从上到下出现的顺序显示(如图所示)
4、正确答案+2技能分。不用辅助列再+2技能分。不用辅助列且公式在EXCEL2003版本下运行正常可再获得加分,但最高不超过8个技能分。

【时限】2010年6月20日0:00截稿,请跟帖回复。


 
取最大对称字符.rar
2楼
wangg913
=INDEX(A:A,SMALL(IF(MAX((MMULT(--EXACT(MID(A1:A8,COLUMN(A:BH),1),MID(A1:A8,(LEN(A1:A8)<COLUMN(A:BH))*200+LEN(A1:A8)+1-COLUMN(A:BH),1)),ROW(1:60)^0)=60)*LEN(A1:A8))=(MMULT(--EXACT(LEFT(RIGHT(A1:A8,COLUMN(A:BH))),RIGHT(LEFT(A1:A8,COLUMN(A:BH)))),ROW(1:60)^0)=60)*LEN(A1:A8),ROW(1:8),9),ROW(1:8)))&""
3楼
xiongkehua2008
=INDIRECT("a"&SMALL(IF((MMULT(N(FIND(MID(A$1:A$8,COLUMN(A:BH),1),A$1:A$8)=FIND(LEFT(RIGHT(A$1:A$8,COLUMN(A:BH))),A$1:A$8)),ROW($1:$60)^0)=60)*(MAX((MMULT(N(FIND(MID(A$1:A$8,COLUMN(A:BH),1),A$1:A$8)=FIND(LEFT(RIGHT(A$1:A$8,COLUMN(A:BH))),A$1:A$8)),ROW($1:$60)^0)=60)*LEN(A$1:A$8))=LEN(A$1:A$8)),ROW($1:$8),10),ROW(a1)))
取最大对称字符.rar
4楼
wenshui2006
加了一辅助列,,,适用2003/2007/2010版,,,,,


    等看高手不加辅助列公式,,,,
取最大对称字符.rar
5楼
rongjun
适用于2003、2007、2010版本
  1. =INDEX(A:A,SMALL(IF((MMULT(--(CODE(MID($A$1:$A$8&REPT(0,60),COLUMN(A:BH),1))=CODE(RIGHT(REPT(0,60)&$A$1:$A$8,COLUMN(A:BH)))),ROW($1:$60)^0)=60)*LEN($A$1:$A$8)=MAX((MMULT(--(CODE(MID($A$1:$A$8&REPT(0,60),COLUMN(A:BH),1))=CODE(RIGHT(REPT(0,60)&$A$1:$A$8,COLUMN(A:BH)))),ROW($1:$60)^0)=60)*LEN($A$1:$A$8)),ROW($1:$8),4^8),ROW(1:1)))&""

  1. =INDEX(A:A,SMALL(IF((MMULT(FIND(MID(A1:A8,COLUMN(A:BH),1),RIGHT(A1:A8,COLUMN(A:BH))&A1:A8),ROW(1:60)^0)=60)*LEN(A1:A8)=MAX((MMULT(FIND(MID(A1:A8,COLUMN(A:BH),1),RIGHT(A1:A8,COLUMN(A:BH))&A1:A8),ROW(1:60)^0)=60)*LEN(A1:A8)),ROW(1:8),4^8),ROW()))&""



取最大对称字符.rar
6楼
wshcw
学习一下.
7楼
fugb-2010
是否有答案?
8楼
liuguansky
314个字符啊,完全是字符的堆砌。
2003适用。区域数组。
=INDEX(A:A,SMALL(IF((MMULT(--(CODE(MID(A1:A8&REPT(" ",30),COLUMN(A:AD),1))=CODE(RIGHT(REPT(" ",30)&A1:A8,COLUMN(A:AD)))),ROW(1:30)^0)=30)*((LEN(A1:A8)=MAX((MMULT(--(CODE(MID(A1:A8&REPT(" ",30),COLUMN(A:AD),1))=CODE(RIGHT(REPT(" ",30)&A1:A8,COLUMN(A:AD)))),ROW(1:30)^0)=30)*LEN(A1:A8)))),ROW(1:8),4^8),ROW(1:8)))&""
列出所有最长字符串.rar
9楼
yuweiqing
又学习了,刚好用上
10楼
ray_lv
想知道怎么做
11楼
wjc2090742

  1. {=INDEX(A:A,SMALL(IF((MMULT(--EXACT(MID(REPT("$",60-LEN($A$1:$A$8))&$A$1:$A$8,61-TRANSPOSE(ROW($1:$60)),1),MID($A$1:$A$8&REPT("$",60-LEN($A$1:$A$8)),TRANSPOSE(ROW($1:$60)),1)),ROW($1:$60)^0)=60)*LEN($A$1:$A$8)=MAX((MMULT(--EXACT(MID(REPT("$",60-LEN($A$1:$A$8))&$A$1:$A$8,61-TRANSPOSE(ROW($1:$60)),1),MID($A$1:$A$8&REPT("$",60-LEN($A$1:$A$8)),TRANSPOSE(ROW($1:$60)),1)),ROW($1:$60)^0)=60)*LEN($A$1:$A$8)),ROW($1:$8),4^8),ROW()))&""}

适用版本07及10版。
取最大对称字符.rar
12楼
Google
学习,看看
13楼
donghan
目前我的公式:
=INDEX(A:A,SMALL(IF(MAX(-MMULT(FIND(MID(A1:A8,COLUMN(1:1),1),RIGHT(A1:A8,COLUMN(1:1))&A1:A8)-1,ROW(1:256)^0)+LEN(A1:A8))=-MMULT(FIND(MID(A1:A8,COLUMN(1:1),1),RIGHT(A1:A8,COLUMN(1:1))&A1:A8)-1,ROW(1:256)^0)+LEN(A1:A8),ROW(),9),ROW()))&""未命名.JPG
 
14楼
rongjun

公式中引用整行会有问题,因为高版本中1行有16384列而不是256列。
15楼
donghan
我是2003版公式,如果想都适用COLUMN(1:1)——>COLUMN(A:BH),256——>60
16楼
Google
=INDEX(A:A,SMALL(IF((MMULT(FIND(MID(A$1:A$8,COLUMN(A:BH),1),RIGHT(A$1:A$8,COLUMN(A:BH))&A$1:A$8),ROW($1:$60)^0)=60),ROW(A$1:A$8),4^8),ROW(A1)))&""
通用吗?
17楼
rongjun

13楼公式还有个问题,如果有类似“11111A21243AaAa34212A11111”的字符串,则公式出错。
18楼
rongjun

你的公式不是题目所求答案。
19楼
donghan
那我目前只有这个了:
=INDEX(A:A,SMALL(IF(MAX((MMULT(FIND(MID(A1:A8,COLUMN(A:BH),1),RIGHT(A1:A8,COLUMN(A:BH))&A1:A8),ROW(1:60)^0)=60)*LEN(A1:A8))=(MMULT(FIND(MID(A1:A8,COLUMN(A:BH),1),RIGHT(A1:A8,COLUMN(A:BH))&A1:A8),ROW(1:60)^0)=60)*LEN(A1:A8),ROW(),9),ROW()))&""
20楼
xihabang
真是高手如云啊 .. 呵呵

版本不支持07的 ,
21楼
donghan
多单元格数组公式:
=INDEX(A:A,MMULT(INT(LARGE((MMULT(FIND(MID(A1:A8,COLUMN(A:BG),1),RIGHT(A1:A8,COLUMN(A:BG))&A1:A8),ROW(1:59)^0)=59)*LEN(A1:A8)-ROW()%,ROW()^{0,1,0})*10^{0,2,-2}+{2,0,1}),{100;-1;-100}))&""
22楼
donghan
或者单元格数组公式:
=INDIRECT("a"&SUM(INT(LARGE((MMULT(FIND(MID(A$1:A$8,COLUMN(A:BH),1),RIGHT(A$1:A$8,COLUMN(A:BH))&A$1:A$8),ROW(1:60)^0)=60)*LEN(A$1:A$8)-ROW($1:$8)%,ROW()^{0,1,0})*10^{0,2,-2}+{2,0,1})*{100,-1,-100}))&""
下拉
23楼
donghan
公式思路解释请参考

以前的公式几乎都忘记考虑没有对称字符串的情况了,解释中的公式考虑了这一种情况

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap