在一个单元格中字符串搜索多个值

时间:2020-11-04 11:40:52

标签: excel string search excel-formula

我有一个Excel电子表格,其中包含一列字符串列表。字符串列表由多个不同长度的数字组成,并用“ /”和“;”分隔字符串的第一个条目是代码ID(长度始终为3)(例如红色),后跟“ /”,然后是数量(长度不同)(例如绿色),后跟“;”。如果字符串继续。 有没有办法隔离字符串中的每个金额,仅使用内置的Excel函数(不使用VBA)可以做到这一点

示例:

151/802;259/22;283/93                       ---> 802 22 93
251/489;166/11;280/12;018/50;274/27;283/93  ---> 489 11 12 50 27 93 

enter image description here

到目前为止,我已经尝试过

荷兰语版本:

=DEEL(E2;(VIND.SPEC("/";E2)*1)+1;(VIND.ALLES(";";E2;1)-(VIND.ALLES("/";E2;1)+1)))

或用英语:

=MID(E2;(SEARCH(“/”;E2)*1)+1;(FIND(“;”;E2;1)-(FIND(“/”;E2;1)+1)))

但这只给了我第一个条目,我不知道如何将其循环为完整的字符串。

1 个答案:

答案 0 :(得分:1)

使用Excel O365:

enter image description here

B1中的公式:

=TRANSPOSE(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1,"/",";"),";","</s><s>")&"</s></t>","//s[position() mod 2 = 0]"))

使用旧版本(但至少为2013年)时,B1中的公式:

=INDEX(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE($A1,"/",";"),";","</s><s>")&"</s></t>","//s[position() mod 2 = 0]"),COLUMN(A1))

如果使用的是此版本,请右键拖动。


如果您的目标是仅将这些金额相加即可:

=SUMPRODUCT(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1,"/",";"),";","</s><s>")&"</s></t>","//s[position() mod 2 = 0]"))

enter image description here


如果您对FILTERXML()可以为您做什么感兴趣,您可能会发现this有趣的读物。