楼主 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版本
或
取最大对称字符.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 |
适用版本07及10版。 取最大对称字符.rar |
12楼 |
学习,看看 |
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楼 |
=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 |
公式思路解释请参考 以前的公式几乎都忘记考虑没有对称字符串的情况了,解释中的公式考虑了这一种情况 |