如何比较每个元素有多行的两个列表?

如何比较每个元素有多行的两个列表?

我正在尝试找到一种方法,将两个“人”列表(每个人有几行)与另一个可能包含或不包含相同行的列表进行比较。

每个人都有一个独一无二的 ID。对于任一列表中的每个人,行数可能在 1 到 4 行之间。行数可能不相同,或者行数可能不相同。除此之外,对于每个人来说,几乎每行中的每个单元格都是冗余且相同的(主要是个人信息不会发生变化)。可能的行(“项目”)始终相同:夹克、帽子、鞋子和配饰。每行的最后两个单元格是我需要比较的实际值。

英语是我的第二语言,我很难用语言表达出来。因此我在 Google Sheets 上做了一个示例。

我还获得了这两个表格,它们具有我链接的示例中的特定列和格式,我无法更改或重新排列它们。我所能做的就是添加“Went over?”列。

在我看来,我需要一个更复杂的 VLOOKUP 版本,这样我就可以查找唯一 ID(列 B),然后以某种方式查找项目(列 E)并返回该特定项目的金额值(列 F)。然后,只需执行 IF A=B 然后“OK!”等操作即可。但我不知道有哪个函数可以像双重 VLOOKUP 一样工作,可以这么说。

你们这些 SU 的好心人能否指点我如何想出一种不需要编写脚本就能在 N 中生成“比较”列的方法?否则,我如何比较每个人的每个元素与另一个列表中同一个人的相同元素?

示例表 1

姓名 供应商 ID # 性别 年龄 预期项目 预期金额
汤姆·沃茨 6505581 21 夹克 四十四
汤姆·沃茨 6505581 21 帽子 20
汤姆·沃茨 6505581 21 55
汤姆·沃茨 6505581 21 配件 18
史密斯,简 702452 F 三十二 帽子 56
史密斯,简 702452 F 三十二 20
史密斯,简 702452 F 三十二 配件 二十六
约翰·多伊 1235554 54 夹克 80
约翰·多伊 1235554 54 配件 20

示例表 2

姓名 供应商 ID # 性别 年龄 已售商品 销售量 过去了?
汤姆·沃茨 6505581 21 夹克 四十四 好的!
汤姆·沃茨 6505581 21 65 +10
汤姆·沃茨 6505581 21 帽子 20 好的!
汤姆·沃茨 6505581 21 配件 18 好的!
史密斯,简 702452 F 三十二 配件 二十六 好的!
史密斯,简 702452 F 三十二 10 -10
史密斯,简 702452 F 三十二 帽子 56 好的!
约翰·多伊 1235554 54 夹克 95 +15
约翰·多伊 1235554 54 配件 22 2

答案1

没有表格的解决方案LET

现在我首先使用辅助列来获取预期金额(为了使最终公式更简单):
=FILTER($F$2:$F$10,($B$2:$B$10=I2)*($E$2:$E$10=L2))

主要公式只是比较销售量与预期量:
=IF(M2=N2,"OK!",M2-N2)

在此处输入图片描述

答案2

您需要的函数是FILTER(),除此之外我还使用LET()函数使公式更简单,并添加了表格(插入 - 表格),这样我就可以使用结构化引用。

=LET(expected, FILTER(Table1[AMOUNT EXPECTED],(Table1[VENDOR ID '#]=[@[VENDOR ID '#]])*(Table1[ITEMS EXPECTED]=[@[ITEMS SOLD]])),IF(expected=[@[AMOUNT SOLD]],"OK!",[@[AMOUNT SOLD]]-expected))

在此处输入图片描述

相关内容