如何在Excel动态数组中比较元素并返回≤当前元素的子集
Excel动态数组实现元素筛选拼接的方案
针对需求——对动态数组{1,3,10,8,5,7,9}中的每个元素,筛选出数组中所有小于等于该元素的项并拼接成文本,可通过以下Excel动态数组公式实现(适用于Excel 365/2021及以上版本):
公式实现
假设原数组存储在单元格区域A1:A7,在B1单元格输入以下公式,会自动溢出生成所有结果:
=BYROW(A1:A7, LAMBDA(x, TEXTJOIN(", ", TRUE, FILTER(A1:A7, A1:A7<=x))))
如果直接使用常量数组,公式可写为:
=BYROW({1,3,10,8,5,7,9}, LAMBDA(x, TEXTJOIN(", ", TRUE, FILTER({1,3,10,8,5,7,9}, {1,3,10,8,5,7,9}<=x))))
公式解析
BYROW:遍历目标数组的每一个元素,将当前元素传入自定义参数xFILTER:根据条件A1:A7<=x,筛选出原数组中所有符合要求的元素TEXTJOIN:将筛选得到的动态数组用,(逗号加空格)拼接成文本,TRUE参数用于忽略空值(避免筛选结果为空时出现多余分隔符)
执行后得到的结果完全匹配预期输出,元素顺序为原数组中符合条件项的自然顺序,满足排序不限的要求。
内容的提问来源于stack exchange,提问作者Wesley Young
相关产品推荐
相关产品推荐

