Excel中是否有智能宏(2000以上)删除字符串的最后一部分,如果它有某个分隔符?
如果没有分隔符,则应保留字符串
例如,对于“。”
abcd.1 => abcd
abcd => abcd
我想我可以使用Instr和Mid等组合来写东西,但我很想知道是否有更聪明的速记,比如“Strip('abcd.1';'。')”或者如此。
答案 0 :(得分:7)
我不相信有任何功能会为你做这件事。
您可以使用以下内容:
=LEFT(A1,IF(ISERROR(SEARCH(".",A1)),LEN(A1),SEARCH(".",A1) - 1))
这将删除分隔符第一个实例后的所有字符,如果要从最后一个实例中删除,则可能需要编写自己的函数来对反向字符串进行搜索。
可在以下位置找到可用功能的完整列表:
答案 1 :(得分:2)
您也可以为此创建自己的用户定义函数(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
然后你可以使用
在公式栏中调用它=剥离(A1,“。”)
答案 2 :(得分:2)
您可以交替使用数据列,单击“文本到列选项”,选择“分隔”,然后点击下一步并选择您选择的符号来分割数据(在您的情况下,'。')。您的数据现在应分为两列。删除第二列:)
答案 3 :(得分:0)
'在函数中使用SPLIT
公共函数extractName(parmField As String,可选parmSplitChar As String =“。”)As String
Dim vSplit As Variant
vSplit = Split(parmField, parmSplitChar)
extractName = vSplit(0)
结束功能
答案 4 :(得分:0)
这适用于德语版的Excel。
=LINKS(A1;WENN(ISTFEHLER(SUCHEN(".";A1));LÄNGE(A1);SUCHEN(".";A1) - 1))