在不使用VBA的情况下在Excel中拆分string(单元格)(例如,对于数组公式)
我有一个Excel电子表格中的分隔string的数据。 为了简单起见,可以考虑像"4#8#10"
的任意数量的东西。
有没有办法将其拆分成一个数组使用数组公式? 例如,像SUM(SplitStr(A1,"#"))
。 (这不起作用 – 它只是返回"4"
。)
有没有一个很好的方法来解决这个问题? 我的理想解决scheme最终会有一个数组,就好像用户在数组公式中input{4,8,10}
。
我的工作表的应用程序不允许基于分隔符的文本到列和总结。 如果可能的话,我宁愿不使用VBA,因为我不会成为工作表的主要消费者。
谢谢,特里
总结条目4,8,10你可以使用像这样的东西:
=SUMPRODUCT(1*TRIM(MID(SUBSTITUTE(A1,"#",REPT(" ",99)),(ROW(OFFSET($A$1,,,LEN(A1)-LEN(SUBSTITUTE(A1,"#",""))+1))-1)*99+((ROW(OFFSET($A$1,,,LEN(A1)-LEN(SUBSTITUTE(A1,"#",""))+1)))=1),99)))
返回的数组是一个文本数组,因此1 *开头是将它们转换为数字的一种方法
这部分:
TRIM(MID(SUBSTITUTE(A1,"#",REPT(" ",99)),(ROW(OFFSET($A$1,,,LEN(A1)-LEN(SUBSTITUTE(A1,"#",""))+1))-1)*99+((ROW(OFFSET($A$1,,,LEN(A1)-LEN(SUBSTITUTE(A1,"#",""))+1)))=1),99))
返回数组:
{"4";"8";"10"}
而在1 *之前:
{4;8;10}
使用A1中的数据,在B1中input:
=TRIM(MID(SUBSTITUTE($A1,"#",REPT(" ",999)),COLUMNS($A:A)*999-998,999))
并复制。
使用XMLfunction:
={SUM(FILTERXML("<t><s>" & SUBSTITUTE(A1, "#", "</s><s>") & "</s></t>", "//s"))}