Google Sheets技巧:用ARRAYFORMULA按国家数动态重复导入行
按居住国家数量重复导入学生姓名的ARRAYFORMULA解决方案
核心公式
=ARRAYFORMULA( SPLIT( FLATTEN( REPT( QUERY({IMPORTRANGE(Reference!A8, Reference!$A$2&Reference!B6)}, "select Col6 where Col10='"&'Advanced Settings'!B5&"'")&"♦", QUERY({IMPORTRANGE(Reference!A8, Reference!$A$2&Reference!B6)}, "select Col12 where Col10='"&'Advanced Settings'!B5&"'") ) ), "♦", TRUE, TRUE ) )
关键调整说明
- 替换列号:将公式中的
Col12替换为主数据中存储「学生居住国家数量」的实际列号(比如若数量在第8列就改成Col8)。 - 分隔符选择:
♦是自定义分隔符,只要你的学生姓名里不会出现这个字符就可以用;如果有冲突,换成~、|这类冷门符号即可。
公式逻辑拆解
- 筛选数据:通过
QUERY+IMPORTRANGE两次获取符合Class Level筛选条件('Advanced Settings'!B5)的学生姓名列表和对应的国家数量列表。 - 重复生成:
REPT函数将每个姓名重复对应次数,并用分隔符拼接成字符串(比如居住2个国家的Alexandra会生成Alexandra♦Alexandra♦)。 - 扁平化拆分:
FLATTEN把所有拼接后的字符串合并成单列,再用SPLIT按分隔符拆分,自动生成重复的姓名行,同时忽略拆分后产生的空值。
注意事项
- 首次使用
IMPORTRANGE时,需要点击公式旁的授权提示,允许当前表格访问主数据文件。 - 如果主数据中国家数量列是文本格式,要在
QUERY外层套VALUE函数转成数字,比如:VALUE(QUERY(..., "select Col12 where Col10='"&'Advanced Settings'!B5&"'"))。 - 公式会自动适配主数据的行数变化,无需手动调整范围。
内容的提问来源于stack exchange,提问作者MaskedRoach
相关产品推荐
相关产品推荐

