问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

excel怎么同时定位字符串中的第一个和最后一个数字

发布网友 发布时间:2024-07-28 00:06

我来回答

1个回答

热心网友 时间:2024-08-03 09:07

在很多情况下,我们都面临着需要确定字符串中第一个和最后一个数字的位置的问题,这可能是为了提取包围在这两个边界内的子字符串。然而,通常的公式都是针对所需提取的子字符串完全由数字组成,如果要提取的数字中有分隔符(例如电话号码)则无法使用。当然,可以先执行替换操作来去掉字符串中的分隔符,这可能会更复杂些。

本文仅涉及被提取的字符串内包含唯一的数字子字符串的情况。

我们以示例来解。先看一下要提取的数字中没有分隔符的情形,例如在单元格A1中的字符串如下:

Account No. 1234567890: requires attention

显然,我们要提取出1234567890。

下面是我们曾经使用的一个公式:

=-LOOKUP(1,-(MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1/17)),ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))))&”**0″))

注意,必须在MID函数生成的值的末尾添加“**0”,以保证能够在任何情况下都得到正确的结果。例如,如果单元格A1中的字符串是:

Account No. 12-Jun: requires attention

使用没有添加“**0”的公式:

=-LOOKUP(1,-(MID(A2,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A2&1/17)),ROW(INDEX(A:A,1):INDEX(A:A,LEN(A2))))))

返回的结果不是12,而是43994,即日期2020-6-12对应的序数。连接字符串“** 0”后,确保类似于“12–Jun”的字符串变为“12–Jun**0”,这样Excel不会将它们认为数字。同样,这也适用于与科学记数法格式的数字相似的字符串。

当然,这样的字符串还必须具有使任何数字保持不变的特性。字符串“**0”等效于“E0”,即表示索引为0的科学计数法,与10 ^ 0一致,因此可保证以这种形式表示的任何数字都将是不变。可以在工作表中进行下列测试来验证:

=0+(147&”**0″)

返回147。

=0+(147&”**2″)

返回14700。

这种方式比“E0”更好,例如:

=-LOOKUP(1,-(MID(A2,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A2&1/17)),ROW(INDEX(A:A,1):INDEX(A:A,LEN(A2))))&”E0″))

得到的结果是36689,因为提取的子字符串为“12-JunE0”,Excel认为是日期2000-6-12。并且,“E”在不同的环境中可能有不同的解释。

好了!下面让我们看看一个相似的例子,但要提取的子字符串数字中包含有分隔符:

Account No. 1-234-5678-90: requiresattention

使用上面给出的公式:

=-LOOKUP(1,-(MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1/17)),ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))))&”**0″))

返回1,而不是我们想要的1-234-5678-90。

正如上文提出的,先删除分隔符并不是一件简单的事:

=-LOOKUP(1,-(MID(SUBSTITUTE(A1,”-“,””),MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1/17)),ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))))&”**0″))

乍一看似乎可以,但返回的结果是1234567890。留给我们的是,如何在正确的位置重新插入分隔符?当然,如果所给字符串的格式是固定的,例如电话号码。然而,即便如此,使用多个REPLACE/SUBSTITUTE函数可能使公式更复杂。

本文寻找的是如何通过确定字符串中的第一个和最后一个数字来提取出子字符串的一种通用解决方案,而不管分隔符是什么、有多少,并且不需要执行替换操作。

在前面的一系列文章中,我们已经找到了一种非常合适的方法来确定字符串中第一个数字的位置,即MIN/FIND函数组合构造。然而,找到一种等效的用于确定字符串中最后一个数字的结构并不容易,能够实现这一点是关键。

对于MID函数的参数num_chars:

=MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1/17)),[someconstruction])

假设希望避免[some construction]由两个单独的子句进行减法运算,其中一个是字符串内第一个数字的位置,另一个是最后一个数字的位置。我们首先查看一些确定字符串中最后一个数字的位置的公式结构,然后查看其中的哪一个(如果有的话)也可能有助于发现第一个数字的位置,这可能会很有用。下面是实现此目的的3种主要的公式结构:

公式1:

=MATCH(1,0/ISNUMBER(0+MID(A1,ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))),1)))

公式2:

=LOOKUP(1,0/ISNUMBER(0+MID(A1,ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))),1)),ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))))

公式3:

=MAX(IF(ISNUMBER(0+MID(A1,ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))),1)),ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1)))))

其中,公式1和公式3是数组公式。

显然,最好的是公式1,因为它不需要重复ROW子句。但是,这样的构造还可以用于查找字符串中的第一个数字吗?如果不行,公式2可以吗?公式3呢?

我们先尝试减法运行,即使用确定最后一个数字位置的子句减去用于确定第一个数字位置的子句:

MATCH(1,0/ISNUMBER(0+MID(A1,ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))),1)))-MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1/17))

从而构成解决方案:

=MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1/17)),1+MATCH(1,0/ISNUMBER(0+MID(A1,ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))),1)))-MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1/17)))

不错!但是,可以改进参数num_chars的构造吗?

一种方法是对上面给出的公式3:

=MAX(IF(ISNUMBER(0+MID(A1,ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))),1)),ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1)))))

进行微小的调整。在2010年及以后的版本中,Excel提供了AGGREGATE函数,它不仅可使许多数组(CSE)结构转换为非CSE,而且还具有标准的CSE公式无法复制的其他优点。

与公式3等价的使用AGGREGATE函数的公式为:

=AGGREGATE(14,6,ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1)))/ISNUMBER(0+MID(A1,ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))),1)),1)

我们可以利用其来不只生成最大值或最小值,而是生成包含这两个值的数组。因此,构造公式:

=MMULT(AGGREGATE({14,15},6,ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1)))/ISNUMBER(0+MID(A1,ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))),1)),1),{1;-1})

转换为:

=MMULT({25,13},{1;-1})

其中的13和25分别代表字符串中第一个和最后一个数字的位置。

但是,其仍有一点缺陷,就是需要重复ROW结构。我们能否对此进行改进,找到不需要重复子句的公式构造?是的,可以使用:

MATCH(“*”,T(1/(1+MID(A1,ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))),1))),{1,0})

这类似于AGGREGATE的结构,将一个数组传递给其参数,得到两个结果组成的数组。上面的公式转换为:

MATCH(“*”,T(1/(1+{“A”;”c”;”c”;”o”;”u”;”n”;”t”;””;”N”;”o”;”.”;””;”1″;”-“;”2″;”3″;”4″;”-“;”5″;”6″;”7″;”8″;”-“;”9″;”0″;””;”r”;”e”;”q”;”u”;”i”;”r”;”e”;”s”;””;”a”;”t”;”t”;”e”;”n”;”t”;”i”;”o”;”n”})),{1,0})

转换为:

MATCH(“*”,T(1/({#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;2;#VALUE!;3;4;5;#VALUE!;6;7;8;9;#VALUE!;10;1;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!})),{1,0})

转换为:

MATCH(“*”,T({#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;0.5;#VALUE!;0.333333333333333;0.25;0.2;#VALUE!;0.166666666666667;0.142857142857143;0.125;0.111111111111111;#VALUE!;0.1;1;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}),{1,0})

转换为:

MATCH(“*”,{#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;””;#VALUE!;””;””;””;#VALUE!;””;””;””;””;#VALUE!;””;””;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!},{1,0})

可以看出,不是错误值的就是数字值。指定参数match_type的值为1将为提供数组中最后一个非#VALUE!的位置;为0将提供第一个非#VALUE!的位置。这样,上面公式转换成:

{25,13}

现在,可以将此数组传递给MMULT函数,以最终得出MID函数的参数num_chars参数的值。最终的公式为:

=MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1/17)),1+MMULT(MATCH(“*”,T(1/(1+MID(A1,ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))),1))),{1,0}),{1;-1}))

在EXCEL中怎样查找字符串中第一个或最后一个数字的位置.

1、首先使用Excel打开任意一个空白表格文件。2、再在表格单元格A1输入一个带有数字的随机字符串,在A2单元格输入“第一个数字的位置:”,A3单元格输入“最后一个数字的位置:”。3、在B2单元格输入:“=MIN(FIND(ROW(1:10)-1,A1&5^19))”。4、按下CTRL+Shift+enter组合键,即可在B2单元格输...

Excel公式技巧同时定位字符串中的第一个和最后一个数字

先看一下要提取的数字中没有分隔符的情形,例如在单元格A1中的字符串如下: Account No. 1234567890: requires attention 显然,我们要提取出1234567890。 下面是我们曾经使用的一个公式: =-LOOKUP(1,-(MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1/17)),ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))...

excel如何单独提取单元格数字第一二三位

1. 提取第一位数字:假设要提取的数字位于单元格A1中,那么在另一个单元格中输入公式`=MID`。这里的“A1”是包含数字的单元格地址,“1”表示从字符串的第一个字符开始提取,“1”表示提取的字符长度为1。因此,该公式将返回A1单元格中数字的第一位。2. 提取第二...

excel怎么单独提取单元格第一位数字、第二位数字、第三?

在Excel中,要单独提取单元格的第一位数字、第二位数字、第三位数字,可以使用MID函数。首先,MID函数是一个文本处理函数,用于从指定的字符串中提取子字符串。它的语法是:MID,其中text是要提取子字符串的原始字符串,start_num是子字符串的起始位置,num_chars是要提取的子字符串的长度。接下来,以...

excel如何单独提取单元格数字第一二三位

在Excel中,要单独提取单元格数字的第一、二、三位,可以使用MID函数。MID函数允许你从一个文本字符串中提取指定位置的字符。首先,假设你有一个单元格A1,其中包含数字“123456789”。要提取这个数字的第一、二、三位,你可以使用以下公式:1. 提取第一位数字:`=MID`。这个公式的意思是从...

EXCEL如何提取第一、二、三位数字?

在这种情况下,我们可以直接使用MID函数来提取数字。具体公式为:=MID。这个公式会从A1单元格的文本字符串中的第4个字符开始,提取3个字符,即“123”。如果数字的位置不固定,我们需要更复杂的公式来定位并提取它们。例如,我们可以使用SEARCH或FIND函数来查找第一个数字的位置,然后结合MID函数...

在EXCEL中怎样提取字符串中的最后一个字符?

首先,打开你正在处理的Excel工作表,选中一个空白单元格,键入RIGHT函数的语法:=RIGHT(单元格地址,1)。例如,如果你需要从A1单元格的字符串中提取最后一个字符,你应该输入=RIGHT(A1,1)。这个函数的作用是返回指定单元格字符串的右起第1个字符,即最后一个字符。输入完公式后,按Enter键确认,你就...

Excel如何提取字符串中除第一个或最后一个字符的所有其它字符

=LEFT(B1,LEN(B1)-1)将此公式键入空白单元格或单元格D1,然后按Enter键应用它。然后将“自动填充”手柄向下拖动到其他单元格以应用此公式来提取字符。注意:数字1表示您要从单元格B1中的给定文本字符串中删除最后一个字符。相关功能 Excel MID功能 Excel MID函数从您指定位置的文本字符串返回子字符...

在EXCEL中怎样提取字符串中的最后一个字符?

方法步骤如下:1、打开需要操作的EXCEl表格,在空白单元格输入公式=RIGHT(A1,1)。【公式执行结果返回A1单元格右起1个字符,即返回最后一个字符】2、回车完成公式输入,可得相关结果。3、下拉填充下方单元格公式,返回EXCEL表格,发现在EXCEL中提取字符串中的最后一个字符操作完成。

excel 提取中间字符串,开始位置文本和结束文本知道,提取的字符串个数...

用find函数找到“承包单位名称”和“承包单位统一社会信用代码”,确定提取的开始和结束位置。第二:mid函数提取指定位置的内容。效果如图:具体公式为:=MID(A1,FIND("承包单位名称",A1,1)+6,FIND("承包单位统一社会信用代码",A1,1)-FIND("承包单位名称",A1,1)-6)如有需要可以继续交流!

excel选取第一个和最后一个数 怎么选中第一个和最后一个单元格 字符串最后一个字符 excel取一列最后一个数 excel如何把最后的提到第一 excel怎么拉到最后一行 excel第一行复制到最后一行 excel怎么选到最后一列 表格从第一个到最后一个
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何选购营养价值高的芝麻糊? 如何选择高品质的芝麻糊? 怎样挑选高品质的芝麻糊? 如何辨别芝麻糊的品质? 拿球时,怎样避免走步? 打篮球时怎样才能避免"走步"?(带球走三步~) 怎么在excel设置打印区域 ...后,发现蛋壳r内有一点一点的黑黑的,吃了这个鸡蛋会怎么样?_百度知 ... 旧电脑显卡怎样改造再利用 圆柱底面半径6cm,高7cm。侧面积是多少? 76平米2层商铺要几匹的空调 76平米适合装中央空调吗 360卫士精选怎么关闭? 在家创业做什么合适 iPhone15系列价格最高降900元值得买吗 苹果官网罕见大降价是怎么回事 为什么苹果手机开始降价了 请问哪些手机pos机可以不用营业执照跟税务登记证 ...吗?有多少党员同意我才行?需要党员签字、按手印吗 我是山东的,想考江苏的公务员,有限制吗?省和国家公务员考的科目有什... pr分割视频快捷键设置_pr分割音频快捷键 大荔营业执照办理在哪? 如何在edge浏览器中翻译网页内容? win10电脑怎样取消开机密码怎样取消开机密码 win10怎么强制取消开机密码 怎样写好蔬菜的作文? 做完息肉第二天同房了 三宅一生的香水寓意是什么 高铁上有没有开水 ...裳:芳龄虽也随风去: 桃花依旧胜黄花是什么意思? 去年今日此门中,人面桃花相映红;人面不知何处去,桃花依旧笑春风... 打嗝胃胀气是什么原因 为什么胃胀气打嗝 微信视频号如何开通/如何认证? 公众号出现法人扫脸验证,法人刷脸验证失败怎么办? 微信删除文件一刷脸就灭屏是什么原因? win10如何把微信固定在任务栏? qq多少天能改一次实名认证? qq号可以实名认证多少次? 王者荣耀实名制度什么时候实施 加拿大人口2019总人数面积-最受欢迎城市 微信零钱超过10万限额了怎么办 ps软件打不开怎么办? ps打不开一直转圈没有鼠标怎么解决ps打不开一直转圈没有鼠标怎么解决视... ps初始化以后打不开ps一直初始化 下雨天蚊子会进屋吗 下雨天蚊子出来吗 女士右手带手表可以吗 帝舵王子74033 腕表适合什么样的表带? 怎样在剪映里面加字幕? 智能手环带哪个手上好 微信红包提示音如何取消?