我有一个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)))
但这只给了我第一个条目,我不知道如何将其循环为完整的字符串。
答案 0 :(得分: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()
可以为您做什么感兴趣,您可能会发现this有趣的读物。