在不同的工作表中查找重复项或在找到重复项时给出消息框

Finding duplicates in different sheets or giving a message box if duplicate is found

我已经尝试了几种选择,但无法得到我想要的。 我有一个 31 sheet 的工作簿,每个 sheet 都有一列用于输入数字条目。一个 sheet 中可以有重复项,但不同 sheet 中不应有重复项。我应该怎么做?

到目前为止,我想出了另一个 sheet,它使用 IF 从其他 31 个中获取所有值,并借助宏按钮删除每列中的重复项(对于每个 sheet) .顶部有一个条件格式,因此它在 sheet 中显示是否输入了重复项。但是,如果有一个弹出窗口说有重复是最好的。

在包含所有条目的 sheet 中,我还有 0 和空值,它们在每种情况下都会出现在每一列中。

最好的解决方案是有一个按钮,可以在需要检查时按下。

感谢任何建议!

我是不是忘了说我在 VBA 方面完全是菜鸟?我不认为我尝试过的事情是相关的。因为我只需要将按钮的代码放在每个 sheet "Check" 中,这将检查 sheet 的所有值并在找到重复项时给出消息,除了 0和空。

你不需要 VBA。即使我是一名软件开发人员,我也会尽可能少地使用 VBA。

假设所有 31 个 sheet 的值都在 A1-A10 中的每个 sheet 上。然后按照 sheet:

执行以下操作

首先用 sheet 的唯一值创建一个列。为此,您需要 "matrix formula"。跳过 C1 并在单元格 C2 中键入以下公式并使用 CTRL-SHIFT-ENTER(不仅仅是 ENTER!)关闭:

=IFERROR(INDEX($A:$A, MATCH(0, IF(ISBLANK($A:$A),1,COUNTIF($C:C1, $A:$A)), 0)),"")

现在你得到了一个矩阵公式。如您所见,现在公式周围有方括号 {}。 现在将公式向下填充到 C11,您将只得到 A1-A10 的唯一值。执行此操作 31 次后,将所有 31 列 C 引用到概览 sheet。

您可以在概述 sheet 中使用条件格式查看重复项。解释here。使用此解决方案,可以很容易地查明重复项。

但是如果您想要值而不是格式,请创建第二个概览 sheet 并将此公式放入 A1:

=IF(ISNUMBER(OverviewSheet!A1),IF(OverviewSheet!A1<>0,COUNTIF(OverviewSheet!$A:$AE,OverviewSheet!A1)>1))

并将此公式填入单元格 AE10。您将获得整个 TRUE/FALSE 范围。此公式还考虑了空单元格和零。

现在把这个公式放在第二个概述的某个地方sheet:

=COUNTIF(A1:AE10,TRUE())>0

如果您在 31 sheet 中有重复项,现在您有一个单元格只包含 TRUE 或 FALSE。

如果您想在按钮下获得此结果,我相信您可以为此创建一个宏。

也许有更短的结果,但这是我想出的。

成功!

编辑:

好吧,也许我对 VBA 过于乐观了。假设最后一个公式在 AF1 中,那么这是您的宏:

Sub Check()
    If ThisWorkbook.Sheets("OverviewSheet2").Range("AF1").Value = True Then
        MsgBox "We have duplicates!"
    Else
        MsgBox "We have no duplicates."
    End If
End Sub

现在这个宏最简单的选项是放在快捷键下(查看 -> 宏 -> 查看宏 -> Select 'Check' 宏 -> 选项... -> 快捷键),例如CTRL-SHIFT-D。那么你不需要在每个 sheet.

上设置 31 个按钮