Excel 从破折号分隔的值字符串中获取一个字符串

Excel 从破折号分隔的值字符串中获取一个字符串,excel,string,excel-formula,google-sheets,google-sheets-query,Excel,String,Excel Formula,Google Sheets,Google Sheets Query,我有一个如下表(第1行仅作为标题): 使用指南,我已经能够成功地填写单元格B2和C2: B2:=左(A2,搜索(“-”,A2,1)-1) C2:=MID(A2,搜索(“-”,A2)+1,搜索(“-”,A2,搜索(“-”,A2)+1)-搜索(“-”,A2)-1) 不过,我想了解D2的模式。我还没有完全理解C2在做什么——我该如何建立C2的公式,以便在我的字符串中得到第三个东西 我想一旦我看到D2的模式,我就可以继续使用E2、F2等 我希望找到一个可以在Google Sheets或Excel上使用的

我有一个如下表(第1行仅作为标题):

使用指南,我已经能够成功地填写单元格B2和C2:

B2:
=左(A2,搜索(“-”,A2,1)-1)

C2:
=MID(A2,搜索(“-”,A2)+1,搜索(“-”,A2,搜索(“-”,A2)+1)-搜索(“-”,A2)-1)

不过,我想了解D2的模式。我还没有完全理解C2在做什么——我该如何建立C2的公式,以便在我的字符串中得到第三个东西

我想一旦我看到D2的模式,我就可以继续使用E2、F2等


我希望找到一个可以在Google Sheets或Excel上使用的解决方案。

A2B2中输入数据:

=TRIM(MID(SUBSTITUTE($A2,"-",REPT(" ",999)),COLUMNS($A:A)*999-998,999))
并复制到:


A2中输入数据,在B2中输入:

=TRIM(MID(SUBSTITUTE($A2,"-",REPT(" ",999)),COLUMNS($A:A)*999-998,999))
并复制到:


在谷歌表单中,您可以在
B2
中使用,它会将结果扩展到右侧的单元格:

=SPLIT(A2, "-")
对于每个单独的零件,您可以使用
索引

=INDEX(SPLIT(A2, "-"), , 1)
=INDEX(SPLIT(A2, "-"), , 2)
...
对于独立于索引的最后两项:

=REGEXEXTRACT(A2, ".*-(.*)-")
=REGEXEXTRACT(A2, ".*-(.*)")

在Google Sheets中,您可以在
B2
中使用,它会将结果扩展到右侧的单元格:

=SPLIT(A2, "-")
对于每个单独的零件,您可以使用
索引

=INDEX(SPLIT(A2, "-"), , 1)
=INDEX(SPLIT(A2, "-"), , 2)
...
对于独立于索引的最后两项:

=REGEXEXTRACT(A2, ".*-(.*)-")
=REGEXEXTRACT(A2, ".*-(.*)")

虽然
B2
的公式使用直接的
LEFT
C2
的公式稍微复杂一些,并且使用函数
MID(text,start_num,num_chars)

  • text
    显然是输入单元格=
    A2
  • start\u num
    是输出将从中开始的索引,在本例中为
    搜索(“-”,A2)+1
    ,它是第一个
    -
    后的一个字符
  • num_chars
    是输出将包含的字符数。这是棘手的部分!它实际上通过从第二个破折号的索引中减去第一个破折号的索引来计算第一个
    -
    和第二个
    -
    之间的字符数

这不是递归解决此问题的最佳方法,但我确实认为理解每一个代码非常重要,以便下次编写最佳代码。

B2
的公式使用的是直接
C2
的公式稍微复杂一些,并且使用了函数
MID(文本,起始字符,字符数)

  • text
    显然是输入单元格=
    A2
  • start\u num
    是输出将从中开始的索引,在本例中为
    搜索(“-”,A2)+1
    ,它是第一个
    -
    后的一个字符
  • num\u chars
    是输出将包含的字符数。这是一个棘手的部分!它实际上通过从第二个破折号的索引中减去第一个破折号的索引来计算第一个
    -
    和第二个
    -
    之间的字符数

这不是递归解决此问题的最佳方法,但我确实认为理解每一段代码非常重要,以便下次编写最佳代码。

感谢这一巧妙的解决方法,但我正试图让每一行2的公式独立地足以在工作簿中的其他地方使用。^^。此解决方案仅适用于OP just编辑了这个问题,指定他们正在寻找一个同样适用于excel的解决方案。@Rubén“谷歌工作表或excel。”公平地说,我是平台无关者(在编辑中使用“非此即彼”或“非此即彼”)--Slai的解决方案也很有帮助,因为我不介意在任何一个平台上计算数字。考虑到我们在12分钟内找到了两个平台的解决方案,我想这就是生活:)。不过,谢谢你的细微差别,保持事情的缓和是很重要的。谢谢你这个巧妙的解决方法,但我正试图让每一行2的公式独立地足以在我的工作簿中的其他地方使用^^。此解决方案仅适用于刚刚编辑问题的OP,以指定他们正在跳转到一个也适用于excel的解决方案。@Rubén“Google Sheets或excel”。公平地说,我是平台无关者(在编辑中使用“非此即彼”)--Slai的解决方案也很有帮助,因为我不介意在任何一个平台上计算数字。考虑到我们在12分钟内找到了两个平台的解决方案,我想这就是生活:)。不过,谢谢你的细微差别,保持事情的缓和是很重要的。这对我来说是一种巫术,但它就像一种魅力。谢谢大家!@我很乐意帮忙!谢谢你的反馈。这对我来说是一种巫术,但它就像一个符咒。谢谢大家!@我很乐意帮忙!谢谢你的反馈。谢谢你的解释,这很有意义。这主要是我链接的帮助文章的复制+粘贴,但我知道它会很快变得非常臃肿。谢谢你的解释,这很有意义。这主要是我链接的帮助文章的复制+粘贴,但我知道它会很快变得非常臃肿。