我有一个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
到目前为止,我已经尝试过
荷兰文版本:
=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)))
但这只给我第一个条目,我不知道如何为完整的字符串循环。
使用Excel O365:
公式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]"))
如果您对FILTERXML()
可以为您做些什么感兴趣,您可能会发现这很有趣。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句