【问题标题】:Extract text between two characters multiple times on multiple lines in Excel在 Excel 中的多行上多次提取两个字符之间的文本
【发布时间】:2020-06-10 19:34:13
【问题描述】:

我想找到一种简单的方法来在同一单元格中多次提取字符之间的文本。所以在下面的例子中,我想把括号之间的信息放到相邻的列中,如图所示。有没有快速的方法来做到这一点?

我的过程是使用 Text to Columns 将它们分成不同的单元格,然后使用 mid 函数来获取括号之间的内容,并将它们全部串在一起。我想知道是否有人可以想到更好的方法来做到这一点。谢谢!

我应该注意——我想完全在 excel 中执行此操作。

【问题讨论】:

  • 你试过 FIND() .. 然后把它和 MID() 结合起来吗... ?
  • 是的——这允许我获取每个单元格中的第一行,但不能获取后续行。所以在上面的例子中,第二列只有 [123] [789] [012]
  • 使用 FILTERXML 非常有可能
  • =MID(LEFT(A15,FIND(")",A15)-1),FIND("(",A15)+1,LEN(A15))
  • 您预计每个盒子最多有多少个括号?

标签: excel excel-formula


【解决方案1】:

例如:

B1中的公式:

=TEXTJOIN(CHAR(10),1,LEFT(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1," (",CHAR(10)),CHAR(10),"</s><s>")&"</s></t>","//s[substring(.,1,3)*0=0]"),3))

作为数组输入!

如果您对FILTERXML 感兴趣,不妨看看this

【讨论】:

  • 不好意思,我想你的 Excel 还不支持 TEXTJOIN。您仍然可以通过 Index 访问生成的 Filterxml 数组,不再在同一个单元格中。我明天看看。你能告诉我你的 Excel 版本吗?
【解决方案2】:

假设第一个数据在 A1 中,放:

=REPLACE(A1,1,FIND("(",A1),"") in C1

那么,

=IFERROR(REPLACE(C1,FIND(")",C1),FIND("(",C1)-FIND(")",C1)+1," "),C1) in D1

然后将 D1 拖到 Q1。最后,放上

=Q1 in B1.

这样就可以了。

想法:将 ) & ( 之间的所有文本替换为空格,15 次。

希望对你有帮助。

【讨论】:

  • 谢谢!我认为这越来越接近......使用这些公式给了我这个输出。 B2:123 456)C2:789)D2:012 345 456)
  • 您可以点击勾号将其从“未回答”问题列表中删除(如果解决了..)..如果没有..分享想法..(;
  • 还没有......我仍然在单元格中得到结尾“)”,并且数字没有出现在单元格中的不同行上
  • “出现在不同的行”需要一个特殊字符。我不知道如何在这个公式中插入它.. | “...在单元格中结束”)" > 在 B1 中执行 =MID(Q1,1,FIND(")",Q1)-1)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-15
  • 2023-02-13
  • 2018-11-02
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
相关资源
最近更新 更多