如何在HSTACK中嵌套SUMIF函数实现单单元格数组公式月度销售汇总
用LET+HSTACK+SUMIF实现单单元格按月销售额汇总
假设你的数据是A列存日期(A2:A100)、B列存销售额(B2:B100),以下是直接可用的数组公式,能生成单单元格的按月汇总报告:
=LET( dates, A2:A100, sales, B2:B100, months, UNIQUE(MONTH(dates)), sorted_months, SORT(months), month_names, TEXT(DATE(2024, sorted_months, 1), "m月"), monthly_sales, SUMIF(MONTH(dates), sorted_months, sales), summary_rows, HSTACK(month_names, monthly_sales&"元"), TEXTJOIN(", ", TRUE, BYROW(summary_rows, LAMBDA(r, TEXTJOIN(": ", TRUE, r)))) )
公式拆解
LET:一次性定义所有变量,避免重复引用单元格区域,提升公式可读性和计算效率dates/sales:指向你的日期和销售额数据源
months:提取所有出现过的唯一月份数字;sorted_months对月份排序,保证结果按1-12月顺序展示month_names:把数字月份转成「1月」「2月」这类易读的文本格式monthly_sales:利用SUMIF的数组特性,批量计算每个月份对应的销售额总和HSTACK:把月份名称和对应销售额横向拼接成「月份, 销售额文本」的二维数组- 最后用
BYROW遍历每组数据,拼成「X月:XXX元」的格式,再通过外层TEXTJOIN把所有结果合并成单单元格文本
扩展调整
- 若需跨年区分(避免不同年份同月份数据合并),把
MONTH(dates)替换为EOMONTH(dates,0),同时把"m月"改成"yyyy年m月" - 若要给销售额加小数格式,把
monthly_sales&"元"改成TEXT(monthly_sales, "0.00")&"元" - 数据源有空值时,
UNIQUE和SUMIF会自动忽略,不影响结果
内容的提问来源于stack exchange,提问作者user2224788
相关产品推荐
相关产品推荐

