0

长期读者,第一次提出问题。

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

我需要能够说明数据转储中的每条唯一记录——每条记录(理论上)都应该出现在至少一个过滤的工作表上,并且我需要识别任何不出现的记录。

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

对于此数据转储工作表上的一个记录中的五个连续单元格的给定、唯一、连接的文本字符串,从任何其他工作表中识别任何完全匹配的字符串,如果找到则返回 TRUE,否则返回 FALSE。

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

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

任何帮助表示赞赏,我很乐意在需要时澄清。如果之前有人问过类似的问题,请原谅——我整个下午都在毫无结果地寻找答案。

谢谢!

4

2 回答 2

0

您可以使用 Index 创建一个连接范围,为 Match() 提供查找范围。Match() 可以连接查找项。然后它返回一个匹配的数字,如果没有找到匹配则返回一个错误。围绕此包装错误捕获公式以获得 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)

请注意,任何匹配都将返回一个数字(在汇总公式时将返回布尔值 TRUE),不匹配将返回 FALSE。

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

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

于 2015-10-08T23:52:39.490 回答
0

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

teylyn 编辑:这个公式是一个数组公式,需要用Ctrl- Shift-来确认Enter。如果在编辑公式后只按 Enter 键,它将不起作用。

Control-Shift-Enter 有时也称为 CSE。人们也将其称为“数组输入”公式。Excel 将在公式周围放置花括号,当单元格被选中时,您可以在公式栏中看到。

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

我已经给出了硬回报,所以你可以看到发生了什么更好的事情。显然你必须收集公式

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

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

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

于 2015-10-09T00:20:53.333 回答