在不使用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"))}