EXCEL中如何提取某单元格最后一个空格之前的所有字符,每个单元格空格数不一定一样

比方说该单元格为A1,单元格内容:PGP CBWX PEG 4000 FLK INH BG50LB

最简单的办法:

1、首先自定义一个函数,代码如下:

------------------

Option Compare Text
Function FrSpace(ByVal rng As Range, ByVal T As String)'函数的名称自定义为“FrSpace”
Dim i%, k%, str$, Position%, CountSpace%
Dim Arr() As String
k = 0
str = rng
For i = 1 To Len(str)
If Mid(str, i, 1) = T Then
    ReDim Preserve Arr(k)
    Arr(k) = i
    k = k + 1
End If
Next i
CountSpace = Arr(k - 2)
FrSpace = Left(str, CountSpace - 1)
End Function
-----------------------

2、当函数一旦创建后,就可以象excel的内置函数一样直接使用了。如:=FrSpace(A1," ")

3、该函数的参数介绍:

  从函数自定义的第二行就不难看出撰函数的参数了。

  参数(单元格对象,文本对象)

  该函数的参数由两部分组成,前一个为单元格对象,后一个为你想要确定的文本对象。

由此可知,该函数不仅可以对空格,也可以对其它的文本进行同样的求解,增强了函数的适用性。

追问

代码有问题,标黄部分出错,截取的不是最后一个空格之前的全部内容,B5也出错了,全部都截取了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-11-27

在B1单元格输入以下公式,然后向下填充公式

=LEFT(A1,FIND("座",SUBSTITUTE(A1," ","座",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))-1)))

 

详见附图

本回答被提问者和网友采纳
第2个回答  2015-05-22

B2=LEFT(A1,FIND("-",SUBSTITUTE(A1," ","-",LEN(A1)-LEN(SUBSTITUTE(A1," ",))))-1)向下复制

第3个回答  2015-05-22
如果最后一个空格后面字符串长度是固定的话,可以用函数解决,否则必须用VBA解决
第4个回答  2015-05-22
=LEFT(A1,LEN(A1)-FIND(" ",A1)+1)
相似回答