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

时间:2017-06-19 11:29:17

标签: excel vba duplicates messagebox

我已经尝试了几种选择,但无法获得我想要的效果。 我有一张31张工作簿,每张工作表都有一个输入数字条目的列。一张纸上可能有重复,但不同纸张之间不应该重复。我该怎么办?

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

在包含所有条目的工作表中,我也有0和空值,在每种情况下都会出现在每一列中。

最佳解决方案是在需要检查时按下按钮。

感谢您的任何建议!

我是否忘了提到我在VBA方面是一个完全的菜鸟?我不认为我尝试的事情是相关的。因为我只需要将按钮的代码放在每张纸上,然后检查"这将检查具有所有值的工作表,并在找到重复时给出一条消息,除了0和空。

1 个答案:

答案 0 :(得分:1)

您不需要VBA。尽管我是一名软件开发人员,但我尽量使用尽可能少的VBA。

假设您所有31张纸的价值都在A1-A10的每张纸上。然后在每张纸上执行以下操作:

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

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

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

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

但是如果您想要使用值而不是格式化,请创建第二个概述表并将此公式放在A1中:

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

并将此公式填入单元格AE10。您将得到一整套真/假。此公式还考虑空单元格和零。

现在将此公式放在第二个概述表的某处:

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

现在你有一个单元格只包含TRUE或FALSE,如果你的31张纸上有重复数据。

如果您希望在按钮下显示此结果,我确信您可以为此创建宏。

也许结果较短,但这就是我想出来的。

成功!

编辑:

好吧,也许我对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

现在这个宏的最简单选项是放入快捷键(视图 - &gt;宏 - &gt;查看宏 - &gt;选择&#39;检查&#39;宏 - &gt;选项.. 。 - &gt;快捷键),例如CTRL-SHIFT-d。那么你不需要在每张纸上都有31个按钮。