跨工作表比较 Excel 数据的唯一字符串

Comparing unique strings of Excel data across worksheets

长时间reader,第一次提出问题。

我有一个 Excel 2013 年的工作表,其中包含大约 4,000 条独特的数据记录(行)。我们将其称为数据转储。我使用大约六个不同数据元素(列)中的任何一个过滤了数据转储。在每个过滤器之后,我将结果保存到一个新的工作表中。我清除过滤器重新开始,最终得到了大约六个不同的工作表。

我需要能够说明数据转储中的每条唯一记录——每条记录(理论上)都应该至少出现在一个已过滤的工作表中,我需要确定没有出现的记录。

我的大问题是,唯一标识每条记录的唯一方法是将每行中五个连续单元格中的文本字符串连接起来。我无法在这些工作表中添加一列串联文本(出于这个原因,我现在会饶过你),所以基本上我正在尝试构建一个公式,内容如下:

对于来自此数据转储工作表上一条记录的五个连续单元格的给定的、唯一的、串联的文本字符串,从任何其他工作表中识别出任何完全匹配的字符串,并且 return如果找到则为真,否则为假。

当然,我必须将此公式应用于数据转储中的每条记录。

想法或提示?归根结底,我认为这归结为很多我可以单独管理的小活动部件,但我不确定我是否可以集体管理。

感谢任何帮助,我很乐意在需要的地方进行说明。如果之前有人问过类似的问题,请原谅——我整个下午都在毫无结果地寻找答案。

谢谢!

您可以使用 Index 创建一个连接范围,为 Match() 提供查找范围。 Match() 可以连接查找项。然后它 returns 匹配的数字或如果没有找到匹配的错误。为 TRUE/FALSE 结果围绕此包装错误捕获公式。按照

=iferror(匹配(sheet1!A1&sheet1!B1&sheet1!C1&sheet1!d1&sheet1!e1,index(Sheet2!$a$1:$a$1000&Sheet2!$b$1:$b$1000&Sheet2!$c$1:$c $1000&Sheet2!$d$1:$d$1000&Sheet2!$e$1:$e$1000,0),0),FALSE)

请注意,任何匹配都将 return 一个数字(在汇总公式中计算结果为布尔值 TRUE),不匹配将 return 为 FALSE。

这将为您提供 sheet1 上原始数据第一行的匹配行号,其中第一个提取位于 Sheet2 的前 1000 行中。其他四张纸同理,将五个公式包装成一个OR()语句,得出最终的TRUE或FALSE。

请注意,索引范围不应包含整列,而应仅包含包含数据的行。否则公式重新计算会很慢,尤其是当你使用它 4000 次时。

这是一种方法。如果您有从 A1 向下的数据转储记录。 并假设您可以使用类似的过滤器 sheets。然后调整您的过滤器范围,以便公式正确调用固定范围。
您也许可以说出它们的名字...
此公式需要 CSE 才能工作

Edit by teylyn: This formula is an array formula and needs to be confirmed with Ctrl-Shift-Enter. It will not work if you only hit the Enter key after editing the formula.

Control-Shift-Enter is sometimes referred to as CSE. People also call it "array-entering" a formula. Excel will put curly braces around the formula, which you can see in the formula bar when the cell is selected.

=OR(
(IFERROR(MATCH(A1&B1&C1&D1&E1,FilterSheet1!$A:$A0&FilterSheet1!$B:$B0&FilterSheet1!$C:$C0&FilterSheet1!$D:$D0&FilterSheet1!$E:$E0, 0), FALSE), 
(IFERROR(MATCH(A1&B1&C1&D1&E1,FilterSheet2!$A:$A0&FilterSheet2!$B:$B0&FilterSheet2!$C:$C0&FilterSheet2!$D:$D0&FilterSheet2!$E:$E0, 0), FALSE), 
(IFERROR(MATCH(A1&B1&C1&D1&E1,FilterSheet3!$A:$A0&FilterSheet3!$B:$B0&FilterSheet3!$C:$C0&FilterSheet3!$D:$D0&FilterSheet3!$E:$E0, 0), FALSE), 
(IFERROR(MATCH(A1&B1&C1&D1&E1,FilterSheet4!$A:$A0&FilterSheet4!$B:$B0&FilterSheet4!$C:$C0&FilterSheet4!$D:$D0&FilterSheet4!$E:$E0, 0), FALSE), 
(IFERROR(MATCH(A1&B1&C1&D1&E1,FilterSheet5!$A:$A0&FilterSheet5!$B:$B0&FilterSheet5!$C:$C0&FilterSheet5!$D:$D0&FilterSheet5!$E:$E0, 0), FALSE))

我已经努力 returns 所以你可以更好地了解发生了什么。显然你必须收集公式

编辑新要求:再次需要 Ctrl+Shift+Enter

=CONCATENATE(
(IFERROR(MATCH(A1&B1&C1&D1&E1,FilterSheet1!$A:$A0&FilterSheet1!$B:$B0&FilterSheet1!$C:$C0&FilterSheet1!$D:$D0&FilterSheet1!$E:$E0, 0) & " - FilterSheet1", ""), 
(IFERROR(MATCH(A1&B1&C1&D1&E1,FilterSheet2!$A:$A0&FilterSheet2!$B:$B0&FilterSheet2!$C:$C0&FilterSheet2!$D:$D0&FilterSheet2!$E:$E0, 0) & " - FilterSheet2", ""), 
(IFERROR(MATCH(A1&B1&C1&D1&E1,FilterSheet3!$A:$A0&FilterSheet3!$B:$B0&FilterSheet3!$C:$C0&FilterSheet3!$D:$D0&FilterSheet3!$E:$E0, 0) & " - FilterSheet3", ""), 
(IFERROR(MATCH(A1&B1&C1&D1&E1,FilterSheet4!$A:$A0&FilterSheet4!$B:$B0&FilterSheet4!$C:$C0&FilterSheet4!$D:$D0&FilterSheet4!$E:$E0, 0) & " - FilterSheet4", ""), 
(IFERROR(MATCH(A1&B1&C1&D1&E1,FilterSheet5!$A:$A0&FilterSheet5!$B:$B0&FilterSheet5!$C:$C0&FilterSheet5!$D:$D0&FilterSheet5!$E:$E0, 0) & " - FilterSheet5", ""))

正如@Messy Jesse 所说,我对新要求的编辑仅采用找到的匹配项,并且还附加了 sheet 名称。如果在 sheet 中未找到匹配项,则将 ZLS 添加到字符串中。然后连接整个字符串...