我的电子表格中有两个列表。两个列表都包含两列。一列是计算机序列号,另一列是第一列中的计算机分配给的人员。
这些列表是由两个不同的人创建的,我需要比较它们并找出差异。以下是此问题的一个示例:。
在这个例子中,我需要确保在数据集 A 和数据集 B 中都为人员 A 分配了 CPU1。如果存在差异,则数据集 B 应优先。但是,如果数据集 A 中存在某个人员,而数据集 B 中不存在,则该人员应保留在列表中。
答案1
因此,您需要对照列表 B 检查列表 A,在需要时进行更改以匹配列表 B,在不需要时使用列表 A 的数据。并且您可能想知道发生的问题。
关于第一部分,您需要在列表 A 中创建一个新列,最好将其插入到两个现有列之间,以便它立即成为电子表格中任何位置的任何范围或其他引用的一部分,然后将其推到右侧的列剪切并插入到它之前而不是留在它之后,这样您就可以回到原始材料,而新列就在它们的右侧,但新列是列表 A 材料的任何引用的一部分。
对于第二个,至少有两个事件值得您关注:1) 列表 A 包含与列表 B 不匹配的数据。列中的结果是“更正确”的列表 B,但存在不匹配,2) 检查后,显示的结果与其他显示的结果重复。换句话说,您显示至少有两个人被分配到特定 CPU,除非列表 B 包含重复项,这是因为列表 B 显示一个人,而列表 A 显示一个或多个其他人拥有该 CPU。只有列表 B 结果人可能是正确的,因此其他人表示存在问题。
要进行检查工作,请插入新列,然后将被推回原位的列。我会说您的数据当前是列表 A 是列 A 和 B,黑色列是列 C,列表 B 是列 D 和 E。最后您将有一个新的列 C,将所有其他列向右推一列,因此列表 B 现在是列 E 和 F。标题行是电子表格中的第 1 行,我假设数据是第 2:11 行。
由于列表 B 覆盖了与列表 A 的任何差异,因此该公式将在列表 B 中查找列表 A 中的每个人,如果列表 B 中有该人的条目,则返回列表 B 中包含的内容,如果没有列表 B 条目,则返回列表 A 中包含的内容:
XLOOKUP($B2,$F$2:$F$5,$E$2:$E$5,$A2,0,1)
使用过不错的、新的,XLOOKUP()
但是如果您没有它,您将需要一个Index/Match
解决方案,因为您必须在列表 B 中“向左看”。
然后是问题。在处理这些问题时,你至少有两种选择。可能还有其他方法,比如你可以编写一个宏来完成它,但我只考虑公式。一种方法是使用XLOOKUP()
问题的测试来使问题复杂化。大多数人似乎都大声地长大并朝着那个方向前进。但是有一种更简单的方法,如果需要的话,这种方法允许进行大量的微调,尽管你只需要这里的基本知识。它是使用条件格式(“CF”)进行测试,而不是将上面的公式变成一个 20 行的怪物,即使你刚刚完成,你也不会真正理解它。
使用 CF,您只需选择列出规则的顺序,以便按照正确的顺序测试它们。(大多数人首先计算测试。如果您首先选择顺序,则必须制定符合该顺序的测试。通常,采用另一种方式要容易得多,所以人们这样做。)
因此,如果现在有多个 Person 列出某个特定 CPU,则称为“重复”,CF 对此有内置规则。首先很容易测试,因此请设置它。我稍后会介绍要应用的格式,因为它有一个“技巧”。然后制定第二条规则,使用以下公式进行测试:
=XLOOKUP($B2,$F$2:$F$5,$E$2:$E$5,$A2,0,1)<>$A2
请注意,此新规则会将自身插入到重复规则之前。这很好,如果您将此规则移至第二条选中的规则,则这些规则将不起作用。请选中“如果为真则停止”框。
现在 CF 将检查公式的结果是否与人员的原始列表 A 数据匹配。如果匹配,它将在此处应用格式并停止。如果不匹配,则继续执行第二条规则。
第二条规则检查是否存在重复,如果存在,则应用该格式。
因此,“技巧”是……您将使用一种很少见的格式化可能性将错误消息放入新的列表 A 结果中(而不是将它们放入单元格公式的噩梦、工作的噩梦和试图再次理解所有内容以进行更新或更正的噩梦)。
常规数字格式允许您为单元格中最多四种类型的数据设置格式:正数、负数、零和文本。在其中任何一种中,您都可以将文本字符串(复数)放入格式中。事实上,格式只能是文本字符串。对于这两个 CF 规则,您将使用这个事实。对于第一条规则,请使用以下内容,正如您所看到的:
;;;"列表 A 不匹配"
对于第二条规则,使用以下内容:
;;;">1 已分配"
为了使它们更加突出(它们比“CPU”文本更长,但是......),您可以将文本格式化为不同的颜色,至少可能是漂亮的红色。
如果您只需要没有问题的列表,只需在开始时执行公式并记住这个 CF 内容,以便另一天您希望在单元格中使用简单、直接的公式以及所有错误测试并在 CF 中的简单规则中提供适当的消息,而不是让单元格公式成为噩梦。