乐于分享
好东西不私藏

Excel 2024/365新函数系列讲座(34):LET函数(3)—— LET函数与LAMBDA函数综合应用:设计简洁的通用核对公式

Excel 2024/365新函数系列讲座(34):LET函数(3)—— LET函数与LAMBDA函数综合应用:设计简洁的通用核对公式

如果有两个表格,它们的第一列是项目名称,第二列是要核对的数字,如何设计一个综合公式,一键完整这两个表的核对,并且制作出一个两个表数字差异的核对表?

使用LET函数通过定义名称来简化公式,此时,参考公式如下:

=LET( 项目1,B4:B16,

数值1,C4:C16,

项目2,E4:E16,

数值2,F4:F16,

项目, UNIQUE(VSTACK(项目1,项目2)),

1, SUMIF(项目1,项目,数值1),

2, SUMIF(项目2,项目,数值2),

差值1-2,

合并, HSTACK(项目,1,2,差值),

筛选, FILTER(合并,差值<>0,”全部一致“),

IFERROR(VSTACK({“项目“,”1″,”2″,”1-2″},筛选),””)

)

显然,这个公式就非常简练和易读了,公式中按照计算步骤顺序,定义了以下几个名称:

名称“项目1”:表示单元格区域,B4:B16

名称“数值1”:表示单元格区域,C4:C16

名称“项目2”:表示单元格区域,E4:E16

名称“数值2”:表示单元格区域,F4:F16

名称“项目”:表示不重复项目,UNIQUE(VSTACK(项目1,项目2))

名称“1”:表示每个项目在表1中的值,SUMIF(项目1,项目数值1)

名称“2”:表示每个项目在表2中的值,SUMIF(项目2,项目数值2),

名称“差值”:表示每个项目在两个表的数值的差值,表1-2

名称“合并”:表示将不重复项目名称、表1的值、表2的值和计算出来的差值,合并为一个新数组,HSTACK(项目,1,2,差值)

名称“筛选”:表示对合并数组的筛选结果,筛选条件是差值不为0FILTER(合并,差值<>0,”全部一致“)

LET函数的最后一行是使用VSTACK函数将一行标题文字与筛选结果合并为一个完整核对表,并使用IFERROR函数判断处理错误值,因为如果两个表格数据完全一致,那么FILTER函数的返回结果只有1列数据,但标题是4列数据,列不一致就导致VSTACK函数出返回错误值。

不过,为了能够在任何一个表格中对任意位置的两个表进行核对,我们可以联合使用LAMBDA函数和LET函数设计自定义函数公式,此时参考公式如下:

=LAMBDA( 1项目12项目2

LET(项目UNIQUE(VSTACK(1项目,2项目)),

1,SUMIF(1项目项目,1),

2,SUMIF(2项目项目,2),

差值1-2,

合并, HSTACK(项目1, 2, 差值),

筛选, FILTER(合并差值<>0,” 全部一致“),

IFERROR(VSTACK({“项目“,”1″,”2″,”1-2″}, 筛选),””)

)

)

将这个公式定义一个名称“核对”,就可以在当前工作簿的任何一个工作表调用了。