Excel Lambda函数实现提取Top N并添加'其他项'汇总行
实现带“All Others”汇总行的Excel Lambda Top N提取函数
一、整合到同一Lambda函数的方案
可以直接通过VSTACK将Top N结果与汇总行拼接,结合LET简化重复计算,最终Lambda函数如下:
=LAMBDA(tableRng, rankCol, topN, LET( topRows, FILTER(tableRng, RANK(INDEX(tableRng,,rankCol), INDEX(tableRng,,rankCol), 0) <= topN), nonTopRows, FILTER(tableRng, RANK(INDEX(tableRng,,rankCol), INDEX(tableRng,,rankCol), 0) > topN), allOthersRow, HSTACK("All Others", SUM(INDEX(nonTopRows,,2)), SUM(INDEX(nonTopRows,,3))), VSTACK(topRows, allOthersRow) ) )
各部分说明:
topRows:保留你原有的Top N行提取逻辑nonTopRows:筛选出排名超出Top N的所有行allOthersRow:用HSTACK拼接“All Others”文本,以及非Top N行的Value(第2列)、Percent(第3列)求和结果VSTACK:将Top N行与汇总行垂直合并,输出最终结果
二、单独生成汇总行的公式
如果觉得整合版逻辑复杂,可单独使用以下公式生成“All Others”汇总行,再手动与Top N结果拼接:
=HSTACK("All Others", SUM(FILTER(INDEX(A2:C14,,2), RANK(INDEX(A2:C14,,2), INDEX(A2:C14,,2), 0) > 10)), SUM(FILTER(INDEX(A2:C14,,3), RANK(INDEX(A2:C14,,2), INDEX(A2:C14,,2), 0) > 10)))
替换说明:将公式中的A2:C14改为你的数据区域,10改为目标Top N数值即可。
内容的提问来源于stack exchange,提问作者BruceWayne
相关产品推荐
相关产品推荐

