那么如何从第n个位置到字符串的末尾获取子字符串?
在单元格A1 Name: Thomas B.
预期输出:Thomas B.
我知道一些解决方法,但是我想知道是否还有其他优雅的方法? (某种=RIGHT(A1, -6)
....)
=MID(A1, 6, 999999)
// 999999看起来不太好
=MID(A1, 6, LEN(A1) - 5)
//必须计算2次,首先获取len,然后获取子字符串,似乎工作量太大?
答案 0 :(得分:3)
嗯,您的两种方法都已经可以使用,但是您也可以使用此方法:
=RIGHT(A1,LEN(A1)-6)
(您自己的问题中几乎有这个问题)
或这个:
=TRIM(MID(A1,FIND(":",A1)+1,100))
(FIND()函数返回搜索字符串的数字位置,因此非常适合用于动态子字符串)
答案 1 :(得分:2)
正如多米尼克(Dominique)已经写道: “为什么不只用空字符串替换前六个字符?”
=REPLACE(A1,1,6,"")
我已经做了一些时间测量,但是对于50000条记录(对于LEFT
,MID
,REPLACE
和SUSTITUTE
)来说,相差不到一秒钟。因此,恐怕 ELEGANCE 就是您要得到的一切。
我创建此研究的原因是,当您从第n个字符说起时,您的n
个字符是 7 (您的MID
-s是错误),但您要删除前n-1
( 6 )个字符。因此,根据您表达问题的方式,您在RIGHT
或MID
中可能会采用不同的方法,并且您会记得REPLACE
和SUBSTITUTE
,或者可能不会。
从第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,"")
答案 2 :(得分:1)
为什么不将前六个字符替换为空字符串?
=SUBSTITUTE(A1;LEFT(A1;6);"";1)
答案 3 :(得分:1)
另一种可能性是,您创建一个值为2 ^ 31-1(= 2147483647)的常数,这是32位系统上的最大有符号整数值,并给它起了一个很好的名称,例如MaxInt,然后第一个公式也将高效且美观:
=MID(A1, 6, MaxInt)
您可以使用Ctrl + F3添加名称。如果您对快速计算感兴趣,将其设置为2147483647而不是2 ^ 31-1可能会有一些优势(很少)。