Google Sheets:如何在两个独立标签页重启Arrayformula执行
解决Google Sheets两标签页数据按条件合并到同一列的问题
问题分析
你当前使用的=arrayformula(ifs('Tab 1'!A2:A<>"",'Tab 1'!B2:B, 'Tab 2'!A2:A<>"",'Tab 2'!A2:A))是逐行优先级判断逻辑:同一行先检查Tab1的A列是否非空,是就取Tab1的B列值;否则才检查Tab2的A列是否非空,是就取Tab2的A列值。这就导致Tab2的数据只会填充到Tab1对应行空的位置,无法独立列出Tab2所有符合条件的行。
你需要的是先完整列出Tab1所有符合条件的数据,再紧接着列出Tab2所有符合条件的数据,也就是将两个筛选后的数据集纵向拼接。
解决方案
使用FILTER函数分别筛选两个标签页的目标数据,再用数组拼接符号{;}将它们合并到同一列:
=ARRAYFORMULA({FILTER('Tab 1'!B2:B, 'Tab 1'!A2:A<>""); FILTER('Tab 2'!A2:A, 'Tab 2'!A2:A<>"")})
公式说明
FILTER('Tab 1'!B2:B, 'Tab 1'!A2:A<>""):筛选出Tab1中A列非空的所有行的B列值,生成单列数组FILTER('Tab 2'!A2:A, 'Tab 2'!A2:A<>""):筛选出Tab2中A列非空的所有行的A列值,生成另一单列数组{数组1; 数组2}:将两个单列数组纵向拼接,先显示Tab1筛选结果的全部内容,再显示Tab2筛选结果的全部内容ARRAYFORMULA:确保公式自动适配数据行的变化(FILTER本身可返回数组,此函数可省略,但加上不影响效果)
如果需要避免无符合条件数据时出现错误提示,可以添加IFERROR处理:
=ARRAYFORMULA(IFERROR({FILTER('Tab 1'!B2:B, 'Tab 1'!A2:A<>""); FILTER('Tab 2'!A2:A, 'Tab 2'!A2:A<>"")}, ""))
注意事项
- 请根据实际表格调整标签页名称和列号,比如Tab1的标签名是“标签页1”,需替换成对应名称
- 如需修改筛选条件,直接调整
FILTER的第二个参数即可
内容的提问来源于stack exchange,提问作者Sam Toufaili
相关产品推荐
相关产品推荐

