Excel formula 从excel中的复杂字符串中提取文本

Excel formula 从excel中的复杂字符串中提取文本,excel-formula,Excel Formula,所附图像(链接:)显示了从web导入的表I中的一系列单元格(B1:B7)。我需要一个公式,允许我从每个单元格中提取名称。在本例中,我的目标是生成以下姓名列表,其中每个姓名都位于自己的单元格中:Erik Karlsson、P.K.Subban、John Tavares、Matthew Tkachuk、Steven Stamkos、Dustin Brown、Shea Weber 我一直在读关于左、右和中函数的书,但我被不规则的间距和特殊字符(即一些名称旁边带有问号的方框)弄糊涂了 有人能帮我提取名字

所附图像(链接:)显示了从web导入的表I中的一系列单元格(B1:B7)。我需要一个公式,允许我从每个单元格中提取名称。在本例中,我的目标是生成以下姓名列表,其中每个姓名都位于自己的单元格中:Erik Karlsson、P.K.Subban、John Tavares、Matthew Tkachuk、Steven Stamkos、Dustin Brown、Shea Weber

我一直在读关于左、右和中函数的书,但我被不规则的间距和特殊字符(即一些名称旁边带有问号的方框)弄糊涂了


有人能帮我提取名字吗?谢谢

假设您的单元格采用相同的格式,您可以使用各种文本函数来获取名称

此函数需要以下格式:

  • 一些初始文本,然后是
  • Excel中的两行新行(由
    CHAR(10)
  • 名称,由名字、空格和姓氏组成
  • 名称所在行的第二个空格,后跟一些附加文本
  • 使用此格式,您可以使用以下公式(假设您的数据位于Excel表格中,初始数据列名为Text):

    为了得出这个公式,我们采取以下步骤:

    首先,我们找出名称的起始位置。我们知道这发生在两行新行之后,因此我们使用:

    =SEARCH(CHAR(10),[@Text],SEARCH(CHAR(10),[@Text])+1)+1
    
    内部(第二次出现)
    搜索查找第一个新行,外部(第一次出现)查找第二个新行

    现在我们有了这个值,我们可以使用它来确定字符串的其余部分(在两行新行之后)。假设前面的公式存储在名为
    Start of Name
    的表列中。第二个公式将是:

    =MID([@Text],[@[Start of Name]],LEN([@Text]))
    
    请注意,我们使用的是整个文本的长度,根据定义,这超出了我们的需要。但是,这不是问题,因为Excel返回的最后一个参数到
    MID
    和文本的实际长度之间的较小值

    一旦我们有了从名字开始的文本,我们需要计算第二个空格的位置(名字结束的地方)。要做到这一点,我们需要计算第一个空格的位置。这类似于我们之前计算名字开始的方式(在两行新行之后开始).我们需要的功能是:

    =SEARCH(" ",[@[Rest of String]],SEARCH(" ",[@[Rest of String]])+1)-1
    
    现在,我们知道了名称的起始位置(在两行新行之后)和结束位置(在第二个空格之后)。假设这些数字分别存储在名为
    Start of name
    To Second space
    的列中,我们可以使用以下公式获得名称:

    =MID([@Text],[@[Start of Name]],[@[To Second Space]])
    
    这相当于第一个公式:区别在于第一个公式不使用任何“辅助列”

    当然,如果任何单元格与此格式不匹配,那你就倒霉了。使用Excel公式解析文本可能会很挑剔且不灵活。例如,如果有人有中间名,或者有人有带空格的首字母缩写(例如,p.K.Subban是p.K.Subban),或者有一个
    Jr.
    或其他什么,你的工作就会困难得多

    另一种选择是使用正则表达式来获取所需的数据。我建议作为入门。尽管在名称格式方面仍然存在相同的问题

    最后,还有一个强制性的警告,不要采用任何标准化的名称格式

    =MID([@Text],[@[Start of Name]],[@[To Second Space]])