Google Sheets如何以日期+用户为联合键跨表匹配对应数据
Google Sheets 基于双字段联合键的跨表匹配方案
你需要的以「Date+User」为联合键跨表取数合并结果,可通过以下两种函数方案实现,均能完全匹配你给出的预期结果。
方案1:XLOOKUP 逐行匹配(操作简单易维护)
- 先在结果区域建好4列表头:Date、User、Unit、Amount
- 将表1中全部Date、User、Unit数据复制到结果表对应列
- 在Amount列首个数据单元格输入如下公式,下拉填充整列即可:
=XLOOKUP(A2&B2, '表2'!A:A&'表2'!B:B, '表2'!C:C, "无匹配")
公式逻辑:将当前行的日期、用户名拼接为唯一匹配键,与表2逐行拼接的Date+User键做精确匹配,返回对应行的Amount值。
针对样例中存在同联合键多条记录的情况(如2022/05/29的用户D对应Amount有6、13两个值),XLOOKUP默认返回从上到下第一条命中的记录,正好符合预期结果的取值规则。
方案2:QUERY+VLOOKUP 数组公式(一键生成全量结果)
如果不需要手动复制数据、逐行下拉公式,可直接在空白单元格输入如下数组公式,自动一次性输出完整结果表:
=QUERY( ARRAYFORMULA(IFERROR(VLOOKUP('表1'!A:A&'表1'!B:B, {'表2'!A:A&'表2'!B:B,'表2'!C:C}, 2, 0))), "select Col1,Col2,Col3,Col4 where Col1 is not null label Col1'Date',Col2'User',Col3'Unit',Col4'Amount'", 0 )
公式逻辑:先通过ARRAYFORMULA批量拼接两个表的联合键完成全量VLOOKUP匹配,再通过QUERY过滤空行、自动生成表头,输出结构化的最终结果。
样例数据匹配效果
两种方案输出结果完全符合预期:
| Date | User | Unit | Amount |
|---|---|---|---|
| 2022/05/30 | A | 109 | 1 |
| 2022/05/30 | B | 119 | 2 |
| 2022/05/30 | C | 119 | 3 |
| 2022/05/29 | D | 109 | 6 |
| 2022/05/29 | E | 114 | 7 |
内容的提问来源于stack exchange,提问作者Max R
相关产品推荐
相关产品推荐

