Google Sheets公式需求:为每个行程匹配非销售角色用户并生成对应行
Google Sheets 行程与非Seller用户匹配解决方案
要实现每个行程与所有非Seller角色用户的组合(每行一对),可以用Google Sheets的ARRAYFORMULA结合LET、FILTER等函数完成,无需复杂的Query嵌套。
公式示例
假设:
- 用户角色表在
Users工作表的A列(User)和B列(Role) - 行程表在
Trips工作表的A列(Trip)
在目标单元格输入以下公式:
=ARRAYFORMULA( LET( trips, Trips!A2:A, valid_users, FILTER(Users!A2:B, Users!B2:B<>"Seller"), trip_list, FLATTEN(SPLIT(REPT(JOIN("|", trips)&"|", ROWS(valid_users)), "|")), user_list, INDEX(valid_users, MOD(SEQUENCE(ROWS(trips)*ROWS(valid_users))-1, ROWS(valid_users))+1, {1,2}), HSTACK(trip_list, user_list) ) )
公式说明
LET:定义变量简化结构,分别存储行程列表和筛选后的非Seller用户数据FILTER:直接排除角色为Seller的用户,仅保留Accountant、Finances角色的用户REPT+SPLIT+FLATTEN:将每个行程重复对应次数(非Seller用户的数量),生成平铺的行程序列INDEX+MOD:将非Seller用户列表循环重复对应次数(行程的数量),生成与行程匹配的用户序列HSTACK:横向合并行程和用户数据,生成每行一对的组合结果
最终效果
生成结果符合需求:
| Trip | User | Role |
|---|---|---|
| trip 1 | User 1 | Accountant |
| trip 1 | User 2 | Finances |
| trip 2 | User 1 | Accountant |
| trip 2 | User 2 | Finances |
| trip 3 | User 1 | Accountant |
| trip 3 | User 2 | Finances |
内容的提问来源于stack exchange,提问作者Jesus Navarro
相关产品推荐
相关产品推荐

