ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[经验分享]公式思路是怎么来的?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-4-26 19:22 | 显示全部楼层
谢谢guangyp斑竹!确实思路最重要!!

TA的精华主题

TA的得分主题

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

不是灌水:)

QUOTE:
原解:=RIGHT(A2,SUM(LEN(A2)-LEN(SUBSTITUTE(A2,{0,1,2,3,4,5,6,7,8,9},))))

其实这个问题这样可能也好理解,试想假设请问“JD00345”中几个0?

1、我们首先可能会想到Find函数,来查找0是否存在?但用Find只能定位到第1个0,不能确定有几个;同样,如果使用COUNTIF的模糊查找也只能确定是否有0,也不能确定有几个。
2、既然查找函数无法知道具体的个数,那么可能会想到使用替换函数来将0替换掉,替换为空,因此就有了Substitute的用法,使用原字符长度减去替换掉0后的长度,就是具体包含有0的个数。于是得出了Len(A1)-Len(Substitute(A1,0,))的解法。
3、有这个思路,所以才会想,要想得到所有数字个数,是否只需要将0-9的个数计算出来,就可以了。于是就有了:
=Len(A1)-Len(Substitute(A1,0,))+Len(A1)-Len(Substitute(A1,1,))+Len(A1)-Len(Substitute(A1,2,))+Len(A1)-Len(Substitute(A1,3,))...+Len(A1)-Len(Substitute(A1,9,))
4、但这样书写是否很繁杂,公式很冗长?所以才将0-9的数字写成常量数组作为参数,这样就有了:
=len(a2)-len(substitute(a2,{0,1,2,3,4,5,6,7,8,9},)),但由于参数是数组,结果只能得到各个数字的个数的数组,所以必须使用SUM函数来汇总,才能得出具体的数字总数,最后再用Right来取得连续的数字字符串。
5、通过上面的思路汇总,才产生了最后的公式:=right(a2,sum(len(a2)-len(substitute(a2,{0,1,2,3,4,5,6,7,8,9},))))

因此,这样的设计思路并非一步到位的,也是经过层层的将复杂问题分解成若干个小问题,通过逐个小问题的解决,最后汇集成最终思路,通过分解过程学习到解题的思路,逐步对函数的应用进行掌握,以后才能举一反三的运用。

当然,解决这个问题的方法有多种,例如下面的公式:
1、{=Right(A1,COUNT(--MID(A1,row(indirect("1:"&Len(A1))),1)))}
2、{=Right(A1,Match(1,0*Right(A1,row(indirect("1:"&Len(A1))))))}
3、=Mid(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),Len(A1))

[此贴子已经被作者于2007-4-26 22:04:41编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-26 23:03 | 显示全部楼层

回复gdliyy在2007-4-26 22:03:11的发言

QUOTE:

4 思路并非一步到位的,也是经过层层的将复杂问题分解成若干个小问题,通过逐个小问题的解决,最后汇集成最终思路。

4  通过分解过程学习到解题的思路,逐步对函数的应用进行掌握,以后才能举一反三的运用。

多谢李版主的精彩补充!

TA的精华主题

TA的得分主题

发表于 2007-4-27 00:11 | 显示全部楼层

谢谢guangyp,gdliyy两位的经验之谈和精彩示例.

我想刚开始接触使用函数特别是数组函数来解决问题的网友,可能要经历的阶段:

1. 让别人来帮助自己解决问题.(大多网友来EH的首先动因)

2. 希望能改别人帮自己写的公式,以适应自己的实际数据表格式.

3. 希望自己看懂别人的公式的原理.(这是最先的困惑,发现自己竟是一头乌水).

4. 希望别人能给解释一下公式以使自己能看懂.(困惑之二,发现连别人的解释也看不懂,恰好同时某某的回复给了个链接)

5. 发现链接里讲的东西太多了,自己问的问题只是其中之一罢了,"别人能给解释一下公式"能学会使用公式的想法彻底破灭.其他的似乎更重要.(困惑之三,不知应该先看那个)

6. 开始老实下来,慢慢看一些经验之帖(此时感激之心会油然而生:EH的TXM太好了,其实很多督是已经有整理性的文章).(困惑之四,发现自己看懂的也记不住)

7. 边看经验帖边看别人的解题,如果是似曾相识的就翻原来的讲解,(困惑之五,看了许多的帖,发现还是有许多问题一点也看不懂).

8. 对一点也看不懂的,也不象一开始那样着急了,自己开始有计划逐步推进.

9. 开始尝试在实际工作中使用掌握的公式或在EH上解题.

10. 不断总结并熟能生巧.

第六阶段其实是最重要的,所谓万丈高楼平地起(..其实应该是挖地,打桩......扯远了) 基本概念的建立和牢固与否和那个阶段自己的总结归纳等付出最有关系.

guangyp,gdliyy示例的公式没有"成竹"在胸,是不可能做的出来的.

基础是前提,技巧是经验和知识点的综合运用.

TA的精华主题

TA的得分主题

发表于 2007-4-27 07:52 | 显示全部楼层

TA的精华主题

TA的得分主题

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

1、看论坛精华,吸取公式闪光点。

确实如此!如果把论坛精华贴都弄懂了,理解透了,估计基本上没有什么难题了。

TA的精华主题

TA的得分主题

发表于 2007-4-27 12:45 | 显示全部楼层
willin2000写的是——EH的网虫进化论,哈哈。我也有类似的经历,只不过我求助的很少,别人求助的东西我不会,我就学过来帮他,从中自己就会了。

TA的精华主题

TA的得分主题

发表于 2007-4-27 13:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
高手啊,谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-4-27 20:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用gouweicao78在2007-4-27 12:45:19的发言:
willin2000写的是——EH的网虫进化论,哈哈。.......

同意,呵呵。

TA的精华主题

TA的得分主题

发表于 2007-4-27 20:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
guangyp版主,你好,不知道你能否详细讲解一下:=LOOKUP(9E+307,--RIGHT(A2,ROW(1:100)),RIGHT(A2,ROW(1:100)))呢,我在上次的求助答案里也遇到了类似的公式,但自己学了半天还是没有搞明白,呵呵。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 10:10 , Processed in 0.036561 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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