Excel - 如果范围内存在值则复制

Excel - 如果范围内存在值则复制

我正在处理几个 excel 文件。我觉得这很容易实现,但不知道如何实现。

文件 A 有 2 列:国家/地区和姓名国家/地区是国家/地区列表,其中有重复项。姓名是人员列表,这里也有重复项,但不在同一国家/地区内。因此,每一对国家/地区 - 姓名都是唯一的

文件 B 是参考文件:它仅包含每个国家/地区名称的单个实例,并且还有带有 ID 的第三列

我想要实现的是将整个文件 A 与整个文件 B 进行比较,如果发现对应关系,则将正确的 ID 复制到文件 A 的第三列中

答案1

您想做的事情很容易,因此事情已经正在好转。

文件 A 有两列,国家/地区和名称。我将它们称为A-CountryA-Name。例如,假设一个国家/地区是“法国”,一个名称是“皮卡德”。文件 B 有两列,国家/地区和名称,我将其称为B-Country和 ,B-Name还有第三列 ID,我仍然将其称为 ID,B-ID以遵循模式。

您想查找文件 B 的数据。“如何”是不寻常的部分。但首先,您说的话存在歧义:您说文件 A 的国家/地区 + 名称行是唯一的,虽然一个国家/地区可能出现不止一次,但它会有不同的名称,反之亦然,因此不存在重复的组合。然后,您说文件 B 也存在同样的情况,即其所有组合都是唯一的。歧义在于,您说文件 B 部分的方式暗示列表比文件 A 的列表短,因为它更纯粹,暗示文件 A 可能确实有重复的组合。例如,可能不止一种“法国 + 皮卡德”组合,而文件 B 中可能有 30 种,而肯定只有一行。这是一个问题,因为如果有人误解了,而这意味着其他意思,但不是文件 A 的列表和文件 B 的列表一样“纯粹”,那就可能很重要。如果我理解歧义的方式,要么是我上面写的方式,要么它与文件 B 的列表一样“纯粹”,因此,这对我的答案来说并不重要。但如果存在歧义,导致文件 A 的状态不是“纯粹的”,而是由于其他原因,那么它可能很重要。正如某人在某个地方曾经说过的那样,“你被警告了。”

所以。老实说,我不想设置两个文件并创建公式。所以我使用范围 A1:B10 来存储文件 A 的国家/地区和名称数据,使用范围 A21:C21 来存储 Biles B 的国家/地区、名称和 ID 数据。这样,当您将公式复制到文件 A 中时,您可以轻松看到需要编辑哪些部分以解决文件 B 的问题。

然后根据需要将单元格 C1 的公式复制并粘贴到列中:

=FILTER(  $C$21:$C$30, $A$21:$A$30 & "|" & $B$21:$B$30 = A1 & "|" & B1)

首先FILTER()在 C21:C30 中查找与 A 列和 B 列中逐行值对匹配的值。请注意,您可以对每个集合(A21:A30 和 B21:B30)使用一个范围,这样您就可以搜索整个 B-Country+B-Name 对集合。Excel 会创建一个内部数组,并比较等号右侧的“匹配这个或这些”值(A1、B1)。能够对“匹配这些”使用范围使此操作可行。

您会注意到"|"Country 和 Name 值之间卡住了。这是为了让 Country 结尾和 Name 开头的任何巧合字母不会导致错误匹配。例如,第一列中有“horse”和“hors”,第二列中有“cho”和“echo”。如果没有分隔符(可以说是“分隔符”),它们会连接在一起,给出“horsecho”和“horsecho”……相同的值来查找不同的输入。这是避免此类错误的一种方法。

FILTER()找到匹配项,读取相应的 B-ID 值,并将其返回给公式。这就是满足您需求的全部内容。

然而FILTER()实际上会返回全部存在的匹配项,因此如果文件 B 列表不是那么完美,即每个国家/地区+名称配对只有一个实例,FILTER()则将返回找到的所有匹配项,这在当今会导致错误SPILL,而在早期版本的 Excel 中,仅报告第一个匹配项,这可能没问题,也可能不行,但无论哪种情况,都不会给出存在其他可能不同的匹配项的实际迹象。因此,如果将来使用此方法进行不同的查找,请记住这一点。

FILTER()是一个非常有用的函数。这种用法是有限的,或者我应该说是“精确”的用法。通常,人们会期望得到不止一个结果,而这正是使用它的要点。

困难在于,比如说,VLOOKUP()创建查找范围。这是可以做到的,辅助列是一个很好的工具。(不要像许多人那样轻视辅助列。如果出现临时需要,它们不仅可以在使用后被删除或清除,而且还可以有一个“临时工作表”(或“辅助工作表”)隐藏在某个不妨碍的地方,人们可以在该工作表上完成所有辅助列工作,这样这些列就不会占用输出页面和工作页面的空间,也不会成为用户体验的一部分。)由于FILTER()EXPECTS 范围,因此从一开始它就是处理这种困难的简单方法。

相关内容