ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-7-10 08:32 | 显示全部楼层
如果大家都理解对了版主的意思,得2分的人应该很多的

TA的精华主题

TA的得分主题

发表于 2010-7-10 16:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 wangg913 于 2010-7-9 11:29 发表
这是第二次错解题意了,以后要注意了。
不过解这题目的时候,跟“冻豆腐”大师学到不少东西。感觉自己数组公式的水平提高不少。

“冻”大师什么时候给你开小灶了呀,真羡慕。

TA的精华主题

TA的得分主题

发表于 2010-7-11 08:11 | 显示全部楼层

回复 30楼 lzzgzby 的帖子

这是位数的关系,把10^7,改为9*10^6应该没有问题。

TA的精华主题

TA的得分主题

发表于 2010-7-16 11:32 | 显示全部楼层
按我出题的意图,求对称中最长的字符串,目前答案有以下几个感觉是对的:
1、wangg913 的单个单元格数组公式:
=INDIRECT("a"&SUM(INT(LARGE((MMULT((CODE(RIGHT(1&A$1:A$8&1,COLUMN(A:U)))-CODE(MID(1&A$1:A$8,COLUMN(A:U),1)&1))^2,ROW(1:21))=0)*LEN(A$1:A$8)-ROW($1:$8)%,ROW()^{0,1,0})*10^{0,2,-2}+{2,0,1})*{100,-1,-100}))&""
下拉
2、冻豆腐 的单个单元格数组公式:
=INDIRECT("A"&RIGHT(9*10^6-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))&""
下拉
3、综合各公式再简化的多单元格数组公式(187字符):
=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}))&""
公式解释请参考以下链接
http://club.excelhome.net/thread-600331-1-1.html
4、简化的另一个单个单元格数组公式:
=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}))&""
下拉

[ 本帖最后由 donghan 于 2010-7-19 17:34 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-7-19 10:19 | 显示全部楼层
目前这样看起来更短些。多单元格统一公式。长度193。
=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(1:8)%,ROW(1:8)^{0,1,0})*10^{0,2,-2}+{2,0,1}),{100;-1;-100}))&""

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-19 10:32 | 显示全部楼层

回复 3楼 东方之珠0 的帖子

公 式不需要引用这么多列数,这 样就可以了::
=INDEX(A:A,SMALL(IF((LEN(A$1:A$8)=MAX(LEN(A$1:A$8)))*(MMULT(--EXACT(RIGHT(LEFT(A$1:A$8,COLUMN(A:AD))),LEFT(RIGHT(A$1:A$8,COLUMN(A:AD)))),ROW(1:30)^0)=30),ROW($1:$8),9),ROW(A1)))&""
最近太忙了,e没有时间上论坛了。

TA的精华主题

TA的得分主题

发表于 2010-7-19 11:31 | 显示全部楼层
原帖由 wangg913 于 2010-7-19 10:19 发表
目前这样看起来更短些。多单元格统一公式。长度193。
=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(1:8)%,ROW(1:8)^{0,1 ...

再化简ROW(1:8)为ROW(),目前最终为187字符:
=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}))&""
公式解释见下连接:
http://club.excelhome.net/viewth ... amp;extra=page%3D1#

TA的精华主题

TA的得分主题

发表于 2010-7-20 17:31 | 显示全部楼层
原帖由 wddn 于 2010-7-19 10:32 发表
公 式不需要引用这么多列数,这 样就可以了::
=INDEX(A:A,SMALL(IF((LEN(A$1:A$8)=MAX(LEN(A$1:A$8)))*(MMULT(--EXACT(RIGHT(LEFT(A$1:A$8,COLUMN(A:AD))),LEFT(RIGHT(A$1:A$8,COLUMN(A:AD)))),ROW(1:30)^0)=30),R ...

多单元格数组公式:
=INDEX(A:A,SMALL(IF(MAX(LEN(A1:A8))=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),ROW(),9),ROW()))&""

TA的精华主题

TA的得分主题

发表于 2010-8-10 18:18 | 显示全部楼层
看看你们的公式,才知道写公式就如写文章,既能用文字表达清楚,又能简到不能再简,真不容易,没有一定的道业那只能旁观。不过看长了有点长进,就是看到长公式不再晕了。

TA的精华主题

TA的得分主题

发表于 2015-4-14 22:16 | 显示全部楼层
大神,请帮我看一下这个应该怎么改?
谢了~





本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-11-21 23:17 , Processed in 0.046132 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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