Regex Excel 2010查找和替换:替换为找到的通配符

Regex Excel 2010查找和替换:替换为找到的通配符,regex,excel,Regex,Excel,我试图通过删除每个单元格中的第二个单词(如果适用)来截断excel工作表中的一些数据。也就是说,如果一个单元格有两个单词,我希望它删除第二个单词。例如,查找foo bar,并将其替换为foo。通过研究,我发现以下内容适用于Excel 2011(适用于Mac),但不适用于其他版本: Find: (*) (*) Replace with: \1 如何在我的Excel版本中实现这一点?另外,是否有其他方法可以获得相同的结果?如果您需要公式 =IF(FIND(" ",A2),TRIM(LEFT(A2,

我试图通过删除每个单元格中的第二个单词(如果适用)来截断excel工作表中的一些数据。也就是说,如果一个单元格有两个单词,我希望它删除第二个单词。例如,查找
foo bar
,并将其替换为
foo
。通过研究,我发现以下内容适用于Excel 2011(适用于Mac),但不适用于其他版本:

Find: (*) (*)
Replace with: \1

如何在我的Excel版本中实现这一点?另外,是否有其他方法可以获得相同的结果?

如果您需要公式

=IF(FIND(" ",A2),TRIM(LEFT(A2,FIND(" ",A2))),A2)
或VBA子例程

Sub GetFirstWord()

    Application.ScreenUpdating = False    

    Dim n As Integer
    Dim strWord As String

    n = 2

    Do While Cells(n, 1).Value <> ""

        strWord = Cells(n, 1).Value

        If InStr(1, strWord, " ") Then

           Cells(n, 1).Value = Replace(Left(strWord, InStr(1, strWord, " ")), strWord, "")

        End If

        n = n + 1

    Loop


    Application.ScreenUpdating = True

 End Sub
Sub-GetFirstWord()
Application.ScreenUpdating=False
作为整数的Dim n
作为字符串的Dim strWord
n=2
执行While单元格(n,1)。值“”
strWord=单元格(n,1).值
如果InStr(1,strWord,“”),则
单元格(n,1)。值=替换(左(strWord,InStr(1,strWord,“”),strWord,“”)
如果结束
n=n+1
环
Application.ScreenUpdating=True
端接头

如上所述的两种解决方案都假设单词位于A列。

对于任何有此问题的人,都可以通过转到数据>“文本到列”,选择“分隔符”,并选中“空格”(或使用任何分隔符)来完成。这将把数据分成两列,第二列可以简单地删除以获得所需的结果。我仍然对可能存在的其他方法感兴趣。:)Excel 2010(及更早版本)不支持正则表达式(除了有限的通配符使用外)如上面的示例所示。除了“文本到列”之外,您还可以使用VBA宏。如果您不介意执行一些额外的步骤,还可以使用公式。