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

时间:2018-08-31 16:38:15

标签: excel character extract whitespace

我正在使用以下公式:

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

提取第一个空格之前的单元格字符。但是某些单元格没有空格,否则只需将所有字符提取到单元格中即可。例如我有

apple
banana (yellow)
zucchini (green)

我希望公式返回:

apple
banana
zucchini

但是我却收到了VALUE错误,因为“ apple”单元格中没有空格:

#VALUE!
banana
zucchini

5 个答案:

答案 0 :(得分:2)

这应该为您工作

= IF(ISERROR(LEFT(A1,(FIND(“” ,, A1,1)-1))),A1,LEFT(A1,(FIND(“ ,, A1,1)-1)))< / p>

答案 1 :(得分:2)

使用public static boolean isEmailValid(String email) { Pattern pattern; Matcher matcher; final String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; pattern = Pattern.compile(EMAIL_PATTERN); matcher = pattern.matcher(email); return matcher.matches(); } 并删除可选的起始位置参数(因为默认值为1):

IFERROR

答案 2 :(得分:1)

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

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

(在空单元格中不给零)

答案 3 :(得分:1)

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

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

答案 4 :(得分: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