excel公式技巧:将所有数字提取到单个单元格
发布时间:2022-08-08 01:41:29
本文研究从字符串中提取所有数字并将这些数字作为单个数字放置在单个单元格中的技术。
本文使用与上一篇文中相同的字符串:
81;8.75>@5279@4.=45>A?A;
我们希望公式能够返回:
818755279445
解决方案
相对简洁的数组公式:
=NPV(-0.9,IFERROR(MID(A1,1+LEN(A1)-ROW(INDIRECT(“1:”& LEN(A1))),1)/10,””))
原理解析
现在,我们应该很熟悉ROW/INDIRECT函数组合了:
ROW(INDIRECT(“1:” & LEN(A1)))
生成由1至单元格A1中的字符串长度数组成的数组,本例中A1里的字符串长度为24,因此得到:
{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24}
由1+LEN(A1)=25减去该数组,即:
25-{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24}
得到:
{24;23;22;21;20;19;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1}
即公式中MID函数的参数start_num的值,这样:
MID(A1,1+LEN(A1)-ROW(INDIRECT(“1:”&LEN(A1))),1)
转换为:
MID(“81;8.75>@5279@4.=45>A?A;”,{24;23;22;21;20;19;18;17;16;15;14;13;12;11;10;9;8;7;6;5;4;3;2;1},1)
得到:
{“;”;”A”;”?”;”A”;”>”;”5″;”4″;”=”;”.”;”4″;”@”;”9″;”7″;”2″;”5″;”@”;”>”;”5″;”7″;”.”;”8″;”;”;”1″;”8″}
再由10除这个数组,得到:
{#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;0.5;0.4;#VALUE!;#VALUE!;0.4;#VALUE!;0.9;0.7;0.2;0.5;#VALUE!;#VALUE!;0.5;0.7;#VALUE!;0.8;#VALUE!;0.1;0.8}
传递给IFERROR函数,得到:
{“”;””;””;””;””;0.5;0.4;””;””;0.4;””;0.9;0.7;0.2;0.5;””;””;0.5;0.7;””;0.8;””;0.1;0.8}
继续之前,我们先看看NPV函数。
NPV函数具有一个好特性,可以忽略传递给它的数据区域中的空格,仅按从左至右的顺序操作数据区域内的数值。
NPV函数的语法为:
NPV(rate,value1,value2,value3,,,)
等价于计算下列数的和:
=value1/(1+rate)^1+value2/(1+rate)^2+value3/(1+rate)^3+…
为了生成想要的结果,需将数组中的元素乘以连续的10的幂,然后将结果相加,可以看到,如果为参数rate选择合适的值,此公式将为会提供精确的结果。因此,选择-0.9,不仅因为1-0.9显然是0.1,而且从指数1开始采用0.1的连续幂时,得到:
0.1
0.01
0.001
0.0001
…
相应地得到:
10
100
1000
10000
…
因此,在示例中,生成的数组的第一个非空元素是0.5,将乘以10;第二个元素0.4乘以100,第三个元素0.4乘以1000,依此类推。
这样,公式:
=NPV(-0.9,IFERROR(MID(A1,1+LEN(A1)-ROW(INDIRECT(“1:”& LEN(A1))),1)/10,””))
转换成:
=NPV(-0.9,{“”;””;””;””;””;0.5;0.4;””;””;0.4;””;0.9;0.7;0.2;0.5;””;””;0.5;0.7;””;0.8;””;0.1;0.8})
得到:
818755279445
注意,应对单元格进行格式设置,否则可能结果是货币形式或者指数形式。也可以在公式中添加一个INT函数来确保输出的是整数:
=INT(NPV(-0.9,IFERROR(MID(A1,1+LEN(A1)-ROW(INDIRECT(“1:”&LEN(A1))),1)/10,””)))
其实,还有更复杂的公式可以实现,例如数组公式:
=SUM(MID(A1,LARGE(IF(ISNUMBER(0+MID(A1,Arry1,1)),Arry1),ROW(INDIRECT(“1:”&COUNT(0+MID(A1,Arry1,1))))),1)*10^(ROW(INDIRECT(“1:”&COUNT(0+MID(A1,Arry1,1))))-1))
公式中的Arry1是定义的名称:
=ROW(INDIRECT(“1:”&LEN($A1)))
一对比,就会感叹这样巧妙的公式应用了,只能说佩服!


猜你喜欢
- 使用Word的朋友都知道想要分页换页是要不断按回车键,很多朋友苦思冥想着更快捷的方法,寻求快速翻页的秘诀。如果你还没有找到,那么可不要错过本
- 8月20日消息,虽然Win10已正式发布,但还有很多功能需要改进,Edge浏览器就是主要改进目标之一,本文将介绍更多内容供大家了解最近微软正
- 办公室白领每天都会处理大量的文档,如果对Office的一些功能不太熟悉,不但耗费大量的时间和精力,而且制作出来的文档还不够美观。WPS200
- 如何在EXCEL表格中引用一些简单的函数公式呢?比如说提出某一单元格左边的数值,或者是中间的,又或者是右边等等,今天,小编就教大家在Exce
- edius如何剪辑视频?edius作为一款很棒的媒体制作软件,视频剪辑肯定也是少不了的啦,但是大家知道如何使用吗?今天的教程小编就给大家带来
- 在Excel中如果同时将几种图表合并在一张里将会更加的方便分析数据,进行数据的对比分析等,而这要怎么操作可能很多网友都还不知道,在一张图表中
- 现在的职场朋友每天都离不开移动终端,手机、iPad都是“机不离身”,有了iOS 版WPS办公软件,出差旅行用iPad办公很方便。但要用iPa
- Win10系统打开冰封王座出错提示“CD-ROM drive error”?最近很多升级win10正式版的用户反馈,在新系统中根本玩不了冰峰
- Word文案中少有涉及到目录的存在,但并不意味着目录的作用微小,只有长文章才有必要在起始页出现目录,不过鉴于大多数用户所做的Word目录生成
- 我们都知道电脑里有很多文件,需要清理的也很多,那么我们要怎么来清理这些文件呢。让小编来告诉你们可好~~小编今天要说的是win7的系统要怎么怎
- WinXP系统电脑在使用宽带连接上网时,突然断网,并且提示本地连接受限制或无连接,这是怎么回事?有时候我们使用宽带连接上网时,在电脑任务栏右
- 0x80131500打不开微软商店的怎么解决?有些用户在打开微软应用商店的时候发现提示错误代码0x80131500,那碰到这个问题应该怎么办
- 用Fraps录像的同时在录上自己的声音在win7中如何实现,想必大家都不是很清楚吧,下面以图文的形式为大家讲解下具体的实现步骤,感兴趣的各位
- 如何修剪视频?今天小便给大家整理了使用Movavi Video Editor Plus视频编辑软件修剪视频的教程,操作简单快捷,感兴趣的朋友
- 就在昨天,鸿蒙系统终于揭开了神秘面纱,而许多小伙伴也都已经抢先升级了鸿蒙系统,也有部分小伙伴不确定自己的手机是否可以升级华为鸿蒙系统,今天小
- Noted for Mac是Mac平台上的一款专业录音笔记本应用。结合录音和文书功能,录音同时自动纪录每个字的输入时间,助你在同一笔记下整合
- 表格在生活及工作等方面使用非常的广泛,当我们打印的时候涉及到一个打印区域的设置,下面小编就教你怎么在wps表格中设置打印区域。wps表格中设
- 相信大家都有使用百度网盘这款软件,大家对它的下载速度也深有体会了。除了下载速度的问题,如果您不开通会员,也无法查看压缩包里的具体内容,这也让
- 如下样表:统计每一位员工参与的项目数。如何用公式实现?公式实现C2单元格输入公式:=(LEN(B2)-LEN(SUBSTITUTE(B2,”
- 在Win8.1系统上玩龙之谷会出现蓝屏问题,导致很多实用Win8.1系统的用户无法正常地玩龙之谷这款游戏,下面与大家分享个解决方法此前有用户