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

时间:2015-10-08 22:28:26

标签: excel excel-formula excel-2013 excel-match

长期读者,第一次提问。

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

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

我的一个大问题是,唯一标识每条记录的唯一方法是将每行中五个连续单元格中的文本字符串连接起来。我无法在这些工作表中添加一列连接文本(由于这些原因,我现在不用考虑你),所以基本上我试图建立一个说明如下的公式:

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

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

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

感谢任何帮助,我很乐意澄清需要的地方。如果先前已经提出了类似的问题,请原谅 - 我整个下午都毫无结果地寻找答案。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用Index创建一个连续范围,为Match()提供查找范围。 Match()可以连接查找术语。然后,如果找不到匹配,则返回匹配或错误的数字。围绕此错误捕获错误捕获公式为TRUE / FALSE结果。

= IFERROR(匹配(Sheet 1中A1&安培; SHEET1 B1&安培; SHEET1 C1&安培; SHEET1 D1&安培; SHEET1 E1,指数(Sheet 2中$ A $ 1:!!!$ A $ 1000安培; Sheet 2中$ B $ 1:$ B $ 1000 &安培; Sheet 2中$ C $ 1:!$ C $ 1000安培; Sheet2的$ D $ 1:!$ D $ 1000安培; Sheet2的$ E $ 1:$ E $ 1000,0),0),FALSE)

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

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

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

答案 1 :(得分:0)

这是一种方法。如果您从A1向下拥有您的datadump记录。     假设您可以使用过滤器页面。然后调整过滤器范围,以便公式正确调用固定范围     你可能可以命名他们......
   这个公式需要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添加到字符串中。然后连接总字符串......