Google Sheets:拆分指定行单元格内容并求和的单公式实现
单个公式实现分子求和后计算总平均值
针对你要计算A1:D1区域所有分数的分子总和除以分母总和的需求,以下是不同Excel版本的单个公式方案:
Excel 365/2021 及以上版本(支持TEXTSPLIT函数)
直接用TEXTSPLIT拆分每个分数的分子和分母,分别求和后相除:
=SUM(--TEXTSPLIT(A1:D1,"/"))/SUM(--TEXTSPLIT(A1:D1,"/",,2))
TEXTSPLIT(A1:D1,"/")将每个单元格的分数拆分为分子、分母组成的二维数组--把拆分后的文本转换为数值- 第一个
SUM计算所有分子的总和(4+4+3+4=15),第二个SUM计算所有分母的总和,最终得到15/35的结果
旧版Excel(无TEXTSPLIT函数)
用FILTERXML结合TEXTJOIN实现拆分:
=SUM(FILTERXML("<t><s>"&SUBSTITUTE(TEXTJOIN("/",TRUE,A1:D1),"/","</s><s>")&"</s></t>","//s[position() mod 2=1]"))/SUM(FILTERXML("<t><s>"&SUBSTITUTE(TEXTJOIN("/",TRUE,A1:D1),"/","</s><s>")&"</s></t>","//s[position() mod 2=0]"))
TEXTJOIN("/",TRUE,A1:D1)将所有分数拼接成一个连续的字符串SUBSTITUTE把拼接后的字符串转换为XML格式的节点FILTERXML通过XPath表达式分别提取奇数位置的分子和偶数位置的分母,再各自求和后相除
注意事项
如果单元格中的分数是Excel数值格式(而非文本格式),需要先用TEXT函数将数值转换为分数文本,公式调整为:
=SUM(--TEXTSPLIT(TEXT(A1:D1,"#/#"),"/"))/SUM(--TEXTSPLIT(TEXT(A1:D1,"#/#"),"/",,2))
内容的提问来源于stack exchange,提问作者Alessandro Gaballo
相关产品推荐
相关产品推荐

