Excel 表格关联如何做 - 只会用 VLOOKUP 就 out 啦

表格的关联是工作中经常遇到的问题,如果还只想到用 VLOOKUP 就 out 啦。虽然 VLOOKUP 也能解决不少数据查找引用的常用问题,但是它的缺点也很多,比如写起来麻烦,可读性差,容易踩坑,复杂条件难以实现等等,实际用起来让人各种头大。而 SPL XLL 就好用多了,它是一个擅长处理各种复杂数据操作的 Excel 插件,用它来做表格关联就是小菜一碟。

表格关联通常是将表格变宽,在 SPL XLL 中一般用 join 函数来实现。

(1)单列关联

有数据如下:

..

..

根据 Name 列关联两个表格,找到每种动物对应的 House,将结果拼接表格 1

操作很简单,在 Excel 的空白处,写入如下代码:

=spl("=E(?1).join(Name,E(?2):Name,House)",Sheet1!A1:D4,Sheet2!A1:E9)

如下图:

..

?1 和?2 表示要计算的数据表格,这里指 Sheet1!A1:D4 和 Sheet2!A1:E9。join() 是关联函数,表示根据表 1 的 Name 键和表 2 的 Name 键关联,并将 House 字段拼接到表格 1 上。

返回结果

..

(2)多列关联

还是上一题的数据,改为根据 M、N、O 列的值进行关联,将 Sheet2 中对应的 House 值拼接到 Sheet1 的表格上。

还是用 join 函数,直接输入多个关联列名,列名用“:”分隔即可。

=spl("=E(?1).join(M:N:O,E(?2):M:N:O,House)",Sheet1!A1:D4,Sheet2!A1:E9)

返回结果:

..

(3)关联并过滤(删除匹配不上的行)

有客户订单数据如下:

..

订单明细数据如下:

..


需要查出订购总金额大于 1000 的客户订单信息。

分析:一份订单包含多种产品,订单总金额等于订单内所有产品金额的总和。因此,应先在明细表中计算出每个订单的总金额并筛选出 >1000 的订单,然后再通过 OrderID 与第一张表格的订单数据关联,在订单数据中过滤出符合条件的订单。

为方便理解,我们采用多行代码来实现

代码如下:


A

1

=E(‘Sheet1!A1:D8’)

2

=E(‘Sheet2!A1:E17’)

3

=A2.groups(OrderID;sum(Price*Quantity):Amount).select(Amount>1000)

4

=A1.join@i(OrderID,A3:OrderID)

A3 goups()是分组聚合函数,表示将 A2 数据按 OrderID 分组,算出每份订单总金额 Amount,然后 select() 选出 Amount>1000 的订单

A4 A1 与 A3 按照 OrderID 关联,选项 @i 表示删除 A1 中匹配不上的行。订单数据 A1 中只保留了总金额 >1000 的订单。

多行 SPL 代码在 Excel 中书写形式如下,用 Alt-Enter 可以敲入回车符:

..

同样 ctrl+enter 返回结果,如图,有 3 份订单总金额大于 1000

..

(4)从关联表引用多列

有运费标准表如下:

..

有运输订单表如下:

..

根据运费标准表,求实际运费。

分析,实际运费 = 首重运费 + 超出重量 * 超重单价,其中不满 1KG 的按 1Kg 计算

代码如下:

=spl("=E(?2).join(City,E(?1):City,First1KG+(ceil(WeightKG)-1)*Add1KG:Fee)",Sheet1!A1:C9,Sheet2!A1:C10)

将订单表和运费表按照 City 关联,引用对应列计算出实际运费,命名为 Fee 拼接到订单表上。

返回结果

..

(5)多对一关联

有销售明细表数据如下:

..

有销售人员表数据如下:

..

将销售的性别拼接到销售明细表格上。

一个销售有多条销售明细,属多对一关联,同样使用 join 函数就可实现

=spl("=E(?1).join(Name,E(?2):Name,Gender)",Sheet1!A1:C25,Sheet2!A1:B13)

返回结果:

..

使用 SPL XLL 进行关联操作,简单又直观,多列的关联和引用也是一步完成,比 VLOOKUP 好用太多。

当然SPL XLL的功能远不止此,它还有很多灵活的数据处理函数,能够处理各种复杂 Excel 操作,写法都不难,非常好用。

SPL XLL 下载地址:» esProc Desktop Download

安装方法:SPL XLL 安装与配置

更多参考案例:esProc 桌面版与 Excel 处理