如何在Google Sheets中用MAKEARRAY生成数组并创建动态VSTACK
解决Google Sheets动态生成门禁卡单条记录的方案
假设原数据在Sheet1的A:C列(A=租户姓名,B=公寓号,C=需发放门禁卡数量),直接在目标表的首单元格输入以下公式即可实现需求:
=LET( filtered_data, FILTER(Sheet1!A:C, Sheet1!C:C>0), names, INDEX(filtered_data,,1), units, INDEX(filtered_data,,2), counts, INDEX(filtered_data,,3), cumulative_counts, SCAN(0, counts, LAMBDA(a,b, a+b)), VSTACK( MAKEARRAY( SUM(counts), 2, LAMBDA(r,c, LET( target_row, XMATCH(TRUE, cumulative_counts >= r, 0), IF(c=1, INDEX(names, target_row), INDEX(units, target_row)) ) ) ) ) )
公式核心逻辑
- 过滤无效行:用
FILTER自动剔除C列为0或空的记录,同时适配原表的可变行数,新增/删除租户行都无需手动调整公式范围 - 拆分数据维度:通过
INDEX把筛选后的姓名、公寓号、发卡数拆成独立数组,简化后续调用 - 定位对应租户:
SCAN计算累计发卡量,配合XMATCH找到每条门禁卡记录对应的原租户数据行 - 生成单条记录:
MAKEARRAY根据总发卡数生成对应行数的二维数组,填充姓名和公寓号,最后用VSTACK确保输出结构统一
内容的提问来源于stack exchange,提问作者Shawn
相关产品推荐
相关产品推荐

