在Excel中截断string – 是否有一个函数来删除分隔符后面的string的最后部分

Excel中有没有一个聪明的macros(2000年以上)删除string的最后一部分,如果它有一个特定的分隔符?

如果分隔符不在那里,则应该保留string

例如,对于“。”

abcd.1 => abcd abcd => abcd 

我想我可以用Instr和Mid的组合来写一些东西,但我很想知道是否有一个更聪明的速记,比如“Strip('abcd.1';'。')”。

我不相信有任何function会为你做这个。

你可以使用这样的东西:


 = LEFT(A1,IF(ISERROR(SEARCH(“。”,A1)),LEN(A1),SEARCH(“。”,A1) -  1))

这将删除分隔符的第一个实例后面的所有字符,如果您想从最后一个实例中删除,您可能需要编写自己的函数来对反向string进行search。

完整的可用函数列表可在以下位置find:

http://www.techonthenet.com/excel/formulas/index.php

您也可以为此创build自己的用户定义函数(UDF)。

 Function Strip(ByVal oCell As Range, ByVal sSeperator As String) As String Dim iPos As Integer Dim sValue As String sValue = oCell.Value iPos = InStr(sValue, sSeperator) If (iPos <= 0) Then Strip = sValue Else Strip = Left(sValue, iPos - 1) End If End Function 

然后你可以在你的配方栏中使用

= Strip(A1,“。”)

你可以交替使用数据列,点击“文本到列选项”,select“分隔”,然后点击下一步,select你select的符号来分割数据(在你的情况下,“。”)。 你的数据现在应该分成两列。 删除第二列:)

'在一个函数中使用SPLIT

公共职能extractName(parmField作为string,可选parmSplitChar作为string=“。”)作为string

 Dim vSplit As Variant vSplit = Split(parmField, parmSplitChar) extractName = vSplit(0) 

结束function

这适用于德语版本的Excel。

 =LINKS(A1;WENN(ISTFEHLER(SUCHEN(".";A1));LÄNGE(A1);SUCHEN(".";A1) - 1))