Excel:如果单元格具有空格,则在第一个空格之前提取单元格中的字符

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

我正在使用这个公式:

=LEFT(A1,(FIND(" ",A1,1)-1))

在第一个空格之前提取单元格的字符。但是有些单元格没有任何空格。另外,只提取单元格中的所有字符。比如我有

apple
banana (yellow)
zucchini (green)

我希望公式返回:

apple
banana
zucchini

但我得到一个VALUE错误,因为'apple'单元格中没有空格:

#VALUE!
banana
zucchini
excel character extract whitespace
5个回答
2
投票

使用IFERROR并删除可选的起始位置参数(因为1是默认值):

=IFERROR(LEFT(A1,FIND(" ",A1)-1),A1)

2
投票

这应该适合你

= IF(ISERROR(左(A1,(FIND(“”,A1,1)-1))),A1,左(A1,(FIND(“”,A1,1)-1)))


1
投票

我倾向于添加一个虚拟空间:

=LEFT(A1,FIND(" ",A1&" ")-1)

(空单元格不给零)


1
投票

我发现REPLACE比LEFT提供更多功能。将搜索字符附加到原始文件以避免错误是一种很好的做法。

=REPLACE(A2, FIND(" ", A2&" "), LEN(A2), TEXT(,))

0
投票

仅供S&G使用正则表达式的用户定义函数

Option Explicit
Public Sub TEST()
    Dim tests(), i As Long
    tests = Array("apple", "banana (yellow)", "zucchini (green)")

    For i = LBound(tests) To UBound(tests)
        Debug.Print GetString(tests(i))
    Next
End Sub

Public Function GetString(ByVal inputString As String) As String
  With CreateObject("VBScript.RegExp")
            .Global = True
            .MultiLine = True
            .Pattern = "^\S*"
            If .TEST(inputString) Then
              GetString = .Execute(inputString)(0)
            Else
              GetString = vbNullString
            End If
  End With
End Function

正则表达式:

试试吧here

^断言一行开头的位置

\ S *匹配任何非空白字符(等于[^ \ r \ n \ t \ f \ v])

*量词 - 在零和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)


片:

data

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