Excel从第n个位置到字符串结尾获取子字符串

问题描述 投票:1回答:4

那么如何从第n个位置到字符串结尾获取子字符串?

在单元格A1 Name: Thomas B.输入

预期产量:Thomas B.

我知道某种方法可以做到,但我想知道是否还有其他优雅的方式呢? (某种=RIGHT(A1, -6) ....)

  1. =MID(A1, 6, 999999) // 999999看起来不太好
  2. =MID(A1, 6, LEN(A1) - 5) //必须计算2次,先得到len,然后得到子串,看起来太多了吗?
excel excel-formula
4个回答
2
投票

REPLACE

正如多米尼克已经写道:'你为什么不用空字符串替换前六个字符?'

=REPLACE(A1,1,6,"")

我已经做了一些时间测量,但差距不到一秒,在50000条记录上(对于LEFTMIDREPLACESUSTITUTE)。所以我担心ELEGANCE就是你要得到的。

一项小型研究

我创建这项研究是因为当你从第n个字符说,你的n-th字符是7(你的MID-s是错误的),但是你想删除第一个n-1(6)字符。因此,根据你如何制定你的问题,你可能在RIGHTMID有不同的方法,你会记得REPLACESUBSTITUTE或你可能没有。

enter image description here

A1(*)和B1的小研究公式(#,?,*)

从第N个字符到结尾获取字符串,例如7

=RIGHT(A1,LEN(A1)-(B1-1))
=RIGHT(A1,LEN(A1)-B1+1)
=RIGHT(A1,LEN(A1)-6)
=MID(A1,B1,LEN(A1)-(B1-1))
=MID(A1,B1,LEN(A1)-B1+1)
=MID(A1,B1,LEN(A1))
=MID(A1,7,LEN(A1)-6)
=MID(A1,7,LEN(A1))

删除字符串的N个第一个字符,例如6

=RIGHT(A1,LEN(A1)-B1)
=RIGHT(A1,LEN(A1)-6)
=MID(A1,B1+1,LEN(A1)-B1)
=MID(A1,B1+1,LEN(A1))
=MID(A1,7,LEN(A1)-6)
=MID(A1,7,LEN(A1))

获取字符后的字符串,例如“”

=RIGHT(A1,LEN(A1)-(FIND(B1,A1)))
=RIGHT(A1,LEN(A1)-(FIND(" ",A1)))
=MID(A1,FIND(B1,A1)+1,LEN(A1)-FIND(B1,A1))
=MID(A1,FIND(B1,A1)+1,LEN(A1))
=MID(A1,FIND(" ",A1)+1,LEN(A1)-FIND(" ",A1))
=MID(A1,FIND(" ",A1)+1,LEN(A1))

字符串后获取字符串,例如“:”

=RIGHT(A1,LEN(A1)-(FIND(B1,A1)+LEN(B1))+1)
=RIGHT(A1,LEN(A1)-FIND(B1,A1)-LEN(B1)+1)
=RIGHT(A1,LEN(A1)-FIND(": ",A1)-LEN(": ")+1)
=MID(A1,FIND(B1,A1)+LEN(B1),LEN(A1)-(FIND(B1,A1)+LEN(B1))+1)
=MID(A1,FIND(B1,A1)+LEN(B1),LEN(A1)-FIND(B1,A1)-LEN(B1)+1)
=MID(A1,FIND(B1,A1)+LEN(B1),LEN(A1))
=MID(A1,FIND(": ",A1)+LEN(": "),LEN(A1)-FIND(": ",A1)-LEN(": ")+1)
=MID(A1,FIND(": ",A1)+LEN(": "),LEN(A1))

返回删除字符串的N个首字符,例如6

=SUBSTITUTE(A1,LEFT(A1,6),"",1)

=REPLACE(A1,1,6,"")

3
投票

好吧,你的两种方法都可以使用,但你也可以使用这个:

=RIGHT(A1,LEN(A1)-6)

(你在自己的问题中几乎有这个)

或者这个:

=TRIM(MID(A1,FIND(":",A1)+1,100))

(FIND()函数返回搜索字符串的数字位置,因此非常适合执行动态子字符串)


1
投票

你为什么不用空字符串替换前六个字符?

=SUBSTITUTE(A1;LEFT(A1;6);"";1)

1
投票

另一种可能性是你创建一个值为2 ^ 31-1(= 2147483647)的常量,这是32位系统上的最大有符号整数值,你给它一个很好的名字,比如MaxInt,那么你的第一个公式将会既高效又美观:

=MID(A1, 6, MaxInt)

您可以使用Ctrl + F3添加名称。如果您对快速计算感兴趣,将其设为2147483647而不是2 ^ 31-1可能会有一些(非常小的)优势。

© www.soinside.com 2019 - 2024. All rights reserved.