ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [开_107]字符串末尾连续个数

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-10-1 06:42 | 显示全部楼层

我华丽的再来一个,请版主检查

=SUM((REPT(RIGHT(A2),ROW($1:$100))=RIGHT(A2,ROW($1:$100)))*1) 数组公式

QUOTE:

和2楼/5楼及9楼的第二个答案思路一样. 不能得分. -willin2000

[此贴子已经被willin2000于2007-10-1 21:13:10编辑过]

TA的精华主题

TA的得分主题

发表于 2007-10-1 08:24 | 显示全部楼层

=IF(ISERROR(主公式),LEN(A7),主公式)

其中 主公式=MATCH(0,N(LOOKUP(LEN(Sheet1!C7)-ROW(INDIRECT("1:"&LEN(Sheet1!C7)))+1,ROW(INDIRECT("1:"&LEN(Sheet1!C7))),FIND(RIGHT(Sheet1!C7),Sheet1!C7,ROW(INDIRECT("1:"&LEN(Sheet1!C7))))=ROW(INDIRECT("1:"&LEN(Sheet1!C7))))),0)-1 是名称定义

主公式思路:FIND(RIGHT(A2),A2,ROW(INDIRECT("1:"&LEN(A2))))=ROW(INDIRECT("1:"&LEN(A2)))

---F9--{FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE}

利用了FIND(RIGHT(A2),A2,ROW(INDIRECT("1:"&LEN(A2))))操作后最后的 等差数列的 个数就是末尾重复数。

FIND(RIGHT(A2),A2,ROW(INDIRECT("1:"&LEN(A2))))

{15;15;15;15;15;15;15;15;15;15;15;15;15;15;15;17;17;18;19;20}

然后利用LOOKUP()把--{FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;TRUE;TRUE;TRUE;TRUE}次序倒过来,

{TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}

然后利用MATCH()的参数为0,的查找找到第一个FALSE,然后减1就是答案。

IF()函数处理的是找不到FALSE的情况,其实就是整个字符串都是一样的情况,所以LEN(A2)

QUOTE:
公式字符数长度超过90个,不能得分. -willin2000
[此贴子已经被willin2000于2007-10-1 21:15:56编辑过]

TA的精华主题

TA的得分主题

发表于 2007-10-1 11:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

8楼用FREQUENCY做的公式太繁了,导致willin2000仅给了偶一个金币,修改一下简单多了,看能否再给加个分!

=FREQUENCY(IF((LEFT(RIGHT(" "&A2,ROW($1:$1000)))=RIGHT(A2)),ROW($1:$1000)),IF(LEFT(RIGHT(" "&A2,ROW($1:$1000)))<>RIGHT(A2),ROW($1:$1000)))

QUOTE:

公式字符数长度超过90个,不能得分. -willin2000

[此贴子已经被willin2000于2007-10-1 21:20:50编辑过]

TA的精华主题

TA的得分主题

发表于 2007-10-1 15:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

=IF(ISERROR(主公式),LEN(A1),主公式)

其中 主公式 改进为

=MATCH(0,N(LOOKUP(LEN(Sheet1!A1)+1-ROW(INDIRECT("1:"&LEN(Sheet1!A1))),ROW(INDIRECT("1:"&LEN(Sheet1!A1))),MID(Sheet1!A1,ROW(INDIRECT("1:"&LEN(Sheet1!A1))),1))=RIGHT(Sheet1!A1)),0)-1

主要也是借用了倒序 再结合 MATCH的思想.如果上面是创新得分,这个算是改进也要得分呀.斑竹可不要吝啬分数呀.

QUOTE:

公式字符数长度超过90个,不能得分. -willin2000

[此贴子已经被willin2000于2007-10-1 21:18:42编辑过]

TA的精华主题

TA的得分主题

发表于 2007-10-1 16:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

再来个有点复杂了!呵呵!

=MMULT(TRANSPOSE(ROW(INDIRECT("1:"&LEN(A2)))*0+1),IF(ROW(INDIRECT("1:"&LEN(A2)))<=MAX(IF(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)<>RIGHT(A2),ROW(INDIRECT("1:"&LEN(A2))),0)),0,1))

QUOTE:

公式字符数长度超过90个,不能得分. -willin2000

[此贴子已经被willin2000于2007-10-1 21:19:22编辑过]

TA的精华主题

TA的得分主题

发表于 2007-10-1 16:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

再交卷一个70个字符的公式,请willin2000版审查!

=MIN(IF(LEFT(RIGHT(" "&A1,ROW($1:$1000)))<>RIGHT(A1),ROW($1:$1000)-1))

QUOTE:

反向第一个差异位置思路中改进比较成功的一个, 而且方法也有所不同. -willin2000

[此贴子已经被willin2000于2007-10-1 21:28:34编辑过]

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2007-10-1 23:40 | 显示全部楼层

给个新解法,75字符数组公式

{=-LOOKUP(,-MATCH(REPT("~"&RIGHT(A1),ROW($1:$100)),RIGHT(A1,ROW($1:$100)),))}

QUOTE:

本题中使用2个-, 来代替9E307,少了三个字符,在少字符数方面的值得参考, 不过由于多了2次运算,大量数据时速度应该会比9e307慢.

和2楼的公式都是求最大匹配最后一个字符的数量, 本来是有简化(可以少2个字符),由于字符串含通配符,所以字符个数没有减少,反而没有优势, 相对来说匹配个数算法中,到现在为止,还是5楼山版的最为简洁, 不过是一种新方法.评2分. -willin2000

[此贴子已经被willin2000于2007-10-2 20:29:48编辑过]

TA的精华主题

TA的得分主题

发表于 2007-10-2 00:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

还有一种,71字符,核心公式虽与楼上同,但主要思路是“计数”,与楼上“查(最后)最大数”的思路却不同

=COUNT(MATCH(REPT("~"&RIGHT(A1),ROW($1:$100)),RIGHT(A1,ROW($1:$100)),))

QUOTE:

虽然思路有些不同,但方法上没有大的变化,主体和27楼一样,应该是27楼的优化. 评1分 -willin2000

[此贴子已经被willin2000于2007-10-2 20:33:41编辑过]

TA的精华主题

TA的得分主题

发表于 2007-10-2 09:48 | 显示全部楼层

=LEN(RIGHT(A2,LEN(A2)-LEN(SUBSTITUTE(A2,RIGHT(A2,ROW(1:100)),""))))-LEN(SUBSTITUTE(RIGHT(A2,LEN(A2)-LEN(SUBSTITUTE(A2,RIGHT(A2,ROW(1:100)),""))),RIGHT(RIGHT(A2,LEN(A2)-LEN(SUBSTITUTE(A2,RIGHT(A2,ROW(1:100)),""))),1),""))

虽然很长,但还是贴一下

QUOTE:

公式字符数长度超过90个,不能得分. -willin2000

[此贴子已经被willin2000于2007-10-2 19:35:39编辑过]

TA的精华主题

TA的得分主题

发表于 2007-10-2 13:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

=SUM(--(REPT(RIGHT(A2),ROW($1:$100))=RIGHT(A2,ROW($1:$100))))

QUOTE:

和2楼/5楼及9楼的第二个答案思路一样 .所以和21楼一样不能得分. -willin2000

[此贴子已经被willin2000于2007-10-2 19:39:01编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 06:57 , Processed in 0.044768 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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