【问题标题】:Comparing unique strings of Excel data across worksheets跨工作表比较 Excel 数据的唯一字符串
【发布时间】:2015-10-09 23:17:22
【问题描述】:

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

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

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

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

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

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

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    =iferror(match(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 次。

    【讨论】:

    • 哦,糟糕,我在打字时没有看到您的答案。看起来你是第一个到达那里的。
    • 谢谢你,泰琳!这非常有帮助。只是为了确保我理解了一点:“索引范围不应包含整列,而应仅包含包含数据的行。”换句话说,如果一个工作表有 45 条记录,另一个有 230 条记录,我的两个索引范围将分别为 45 和 230。正确的?编辑:也感谢@MacroMarc 的反馈。硬回报真的有助于解析这个坏男孩。奇怪的是,这与我尝试编写的第一个公式相差不远。不知道我在哪里搞砸了,但是嘿——总得从某个地方开始。
    • 是的,没错。如果您使用整列,则该公式将花费很长时间来计算。您可以通过仅指定包含数据的几百(或几千)行而不是整列中超过一百万行来加快计算速度。
    • 这两个建议都完成了我需要做的事情。最后一个问题:如果我现在有兴趣找出其他工作表上第一个匹配字符串的位置,是否有一种快速而肮脏的方法来做到这一点(不使用 VLOOKUP)?例如,我想知道是否可以使用返回的任何被转换为布尔值 TRUE 的数字。
    • 您可以调整我在上面发布的公式以返回电子表格名称。如果 MATCH 是一个数字,则返回一个文本字符串,如“sheet1”。试试=if(<above formula>,"found on MySheetOne","")
    【解决方案2】:

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

    teylyn编辑:此公式为数组公式,需要用Ctrl-Shift-Enter确认kbd>。它 如果您在编辑公式后只按 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 添加到字符串中。然后将总字符串连接起来......

    【讨论】:

    • 你让它工作了吗? MATCH 的查找范围必须使用索引构造,如上所示,或者必须输入公式。只是觉得这值得一提。
    • 那么,您是要编辑您的帖子并附上有关 CSE 的说明,还是我应该?
    • 我添加了一些说明。并非每个人天生就知道“CSE”的含义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多