【问题标题】:Excel: Extract characters in cell before the first whitespace IF the cell has whitespaceExcel:如果单元格有空格,则在第一个空格之前提取单元格中的字符
【发布时间】:2019-02-06 17:36:27
【问题描述】:

我正在使用这个公式:

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

在第一个空格之前提取单元格的字符。但有些单元格没有任何空格。否则只需将所有字符提取到单元格中。例如我有

apple
banana (yellow)
zucchini (green)

我希望公式返回:

apple
banana
zucchini

但我得到一个 VALUE 错误,因为“苹果”单元格中没有空格:

#VALUE!
banana
zucchini

【问题讨论】:

  • 无法判断您对这个问题的限制是什么,但您也可以使用“空格”作为分隔符进行文本到列。

标签: excel character extract whitespace


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这应该适合你

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

    【讨论】:

    • 你可以用IFERROR缩短这个。
    【解决方案3】:

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

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

    (空单元格不为零)

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        只为 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 ])

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


        表格:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-29
          相关资源
          最近更新 更多