2014-10-06 71 views
0

我有一個包含多個電子表格的Excel表格。在每個電子表格中都有大約1000行的列'firstname'和'lastname'。我記錄了一個宏,它顯示了'firstname lastname'格式的重複行。在多個Excel表格中查找重複的單元格

=IF(SUMPRODUCT(($B$2:$B$1000=B2)*1,($C$2:$C$1000=C2)*1)>1,"Duplicates","No duplicates") 

上面的公式可以在一張表中找到重複的行。我如何調整公式,以便它可以與其他工作表匹配。公式或VBA也可以。

+0

對於那些2007或更高,現有的公式將是與大大更高效COUNTIFS更好()函數這樣的Excel版本:'= IF(COUNTIFS(B:B,B2,C: C,C2)-1,「重複」,「不重複」)。不需要擔心完整的列引用,因爲它只會處理到您的數據範圍,而不是'SUMPRODUCT(...)'逐字處理每個單元格範圍。不幸的是,您不能簡單地將多個工作表引用添加到「Sheet1:Sheet3!B:B」等條件範圍。 – Jeeped 2014-10-06 10:54:00

+0

@Jeeped感謝您的COUNTIFS()函數。它更小,更清潔和高效。除了COUNTIFS()之外,是否還有其他功能可以使用,以便從其他工作表中找到重複項。 – Roland 2014-10-06 11:00:56

+0

Excel中沒有接受通常稱爲3D範圍引用(即多個工作表上的一個或多個單元格範圍)中的條件的本機函數。如果你只有幾張工作表來看,我會建議簡單地加幾個'COUNTIFS(...)'在一起。如果你有超過幾個,那麼UDF可能是更好的路線。 – Jeeped 2014-10-06 11:19:08

回答

0

你可以欺騙Excel接受3D範圍參考作爲參數COUNTIFSINDIRECT和陣列處理禮貌SUMPRODUCT包裝。隨着在Z2要處理的工作表的名稱:Z4,那麼這將算在整個工作表中重複的姓和名在B列& C.

=SUMPRODUCT(COUNTIFS(INDIRECT("'"&$Z$2:$Z$4&"'!B:B"),B2,INDIRECT("'"&$Z$2:$Z$4&"'!C:C"),C2))

您應該能夠納入這一標準公式寫入您的IF()聲明重複識別。

請注意INDIRECT被認爲是一個揮發性功能,重新計算工作簿中的任何更改。根據數據的範圍,您可能會遇到一些計算滯後。

enter image description here

+0

我無法實現您的功能。我沒有真正獲得IF()語句的一部分。 – Roland 2014-10-06 12:23:25

+0

@Roland - 簡單的公式提供了跨多個工作表(在同一列中)的計數。計數爲1意味着沒有重複項,任何高於重複值的值都將代表重複值。例如'= IF(SUMPRODUCT(COUNTIFS(INDIRECT( 「 ' 」&$ Z $ 2:$ Z $ 4「' B:B」),B2,INDIRECT(「 ' 」&$ Z $ 2:$ Z $ 4「'! C:C「),C2)) - 1,」重複「,」不重複「)。 – Jeeped 2014-10-06 12:34:55

+0

嗨@Jeeped,我試着用你的答案。但我想我做錯了什麼。無論如何,作爲解決方法,我複製了一張表中的所有數據,並使用= IF(COUNTIFS(B:B,B2,C:C,C2)-1,「重複」,「無重複」)。不是最好的方式,但仍然。謝謝你的幫助 ! – Roland 2014-10-09 07:43:38

相關問題