(Excel) 对字符串中包含的数字求和的公式(w/o 使用 'Evaluate')

(Excel) Formula to Sum numbers contained in a String (w/o using 'Evaluate')

我在网上搜索过,但无法理解它。

这是我到目前为止的公式:

=TEXT(IF(ISBLANK(A1),0,
IF(LEN(A1)-LEN(SUBSTITUTE(A1,CHAR(10),""))>0,
(SUMPRODUCT(--TRIM(MID(SUBSTITUTE(SUBSTITUTE(A1, ",",""),CHAR(10),REPT(" ",100)),{1,100},100)))),
A1)
),"0.00%")

问题部分是:

SUMPRODUCT(--TRIM(MID(SUBSTITUTE(SUBSTITUTE(A1, ",", ""),CHAR(10),REPT(" ",100)),{1,100},100))))

其中还包含一个故障保护,以防用户在换行符之外添加逗号作为分隔符。

然而,该公式将始终只对字符串中的前两个数字求和,在本例中为 96% 和 4%...我必须承认我对 MID 感到不舒服,无法理解我做错了什么。

提前致谢!

编辑:解决方案

=SUMPRODUCT(FILTERXML("<h><e>"&SUBSTITUTE(SUBSTITUTE(A1,",",""),CHAR(10),"</e><e>")&"</e></h>","//e"))

假设您至少使用 Excel 2013,那么这必须作为数组公式输入(除非您有动态数组)

=SUM(FILTERXML("<h><e>"&SUBSTITUTE(SUBSTITUTE(A1,",",CHAR(10)),CHAR(10),"</e><e>")&"</e></h>","//e"))