(Excel) 对字符串中包含的数字求和的公式(w/o 使用 'Evaluate')
(Excel) Formula to Sum numbers contained in a String (w/o using 'Evaluate')
我在网上搜索过,但无法理解它。
问题:单个单元格包含一个或多个百分比数字的字符串。如果有多个数字,则用换行符 CHAR(10) 分隔。例子。单元格 A1 具有此值:
96%
4%
3%
想要的结果:无论有多少,都求和。在上面的例子中,结果应该是 103%。
挑战:必须通过简单的单细胞公式完成,宏(即“=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"))
我在网上搜索过,但无法理解它。
问题:单个单元格包含一个或多个百分比数字的字符串。如果有多个数字,则用换行符 CHAR(10) 分隔。例子。单元格 A1 具有此值:
96% 4% 3%
想要的结果:无论有多少,都求和。在上面的例子中,结果应该是 103%。
挑战:必须通过简单的单细胞公式完成,宏(即“=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"))