2013-07-04 34 views
0

需要幫助。檢查Excel中的Resiprok數據

如何檢查excel中的互惠數據。的情況下是這樣的:

enter image description here

b => a是錯誤的,因爲它的倒數(已經有a=>b)等..

謝謝你..

+0

resiprok =倒數? – barrowc

+0

是創建一個Visual Basic函數的一個選項嗎? – MikeD

+0

使用循環VBA ... – matzone

回答

2

您可以使用COUNTIFS函數來執行此操作。

假設不包括頭的數據範圍A2:B8,那你就需要在C2單元格,輸入第一個公式是:

=IF(COUNTIFS(A$2:A2,B2,B$2:B2,A2)>0,"error","") 

這個公式將被複制到最後的數據行。

COUNTIFS統計一組條件在多個範圍內滿足的次數。如果在範圍1中滿足標準1並且在範圍2 AND等中滿足標準2,那麼將總數加1到COUNTIFS

在這種情況下,我們使用COUNTIFS來檢查某個person2是否在Person1範圍內以及相應的person1是否在Person2範圍內。

由於您不希望第一次出現person1/person2對被計爲「錯誤」,因此COUNTIFS會應用於一個擴展範圍,該範圍將增大以包含已選中但未包含任何其他對在列表中進一步排列。

例如,在單元格C2中的第一個公式中,COUNTIFS僅應用於範圍A2:B2,在單元格C3中的第二個公式中它應用於A2:B3,依此類推。

換句話說,我們正在查看所有先前的對,看看當前對是否是這些對中的任何一個的倒數。

如果公式找到一個倒數對,它將由COUNTIFS值> 0表示,則返回「錯誤」。

formula with results in worksheet

剛也將返回「錯誤」如果當前行包含以前遇到的倒數對公式。因此,您可以得到以下內容:b->c "" ... c->b "error" ... b->c "error"。相反,如果您希望只將最初遇到的一對的倒數視爲「錯誤」,則需要更復雜的公式。

 
    =IF(COUNTIFS(A$2:A2,B2,B$2:B2,A2)>0,IF(COUNTIFS(A$2:A2,B2,B$2:B2,A2,C$2:C2,"error")>0,"","error"),"") 

該修訂公式檢查當前行中該對的倒數是否先前遇到並標記爲「錯誤」。如果有,那麼當前對未被標記爲「錯誤」。

revised formula with results in worksheet

+0

我認爲當你將另一個b-> c對放在列表的最後時,它不起作用。 –

+0

它會爲該對返回一個錯誤,因爲它是先前遇到的c-> b對的倒數。我想這是一個問題,這是@菲利普希望的結果。 – chuff

+0

IMO它不應該被標記爲錯誤,因爲在第5行沒關係。但是你是對的,@飛利浦必須說出他真正想要的。 –

0

這是可以做到使用內置在函數中 - 我將它分成幾列(理解更清晰),但它可以合併成一個大複雜的公式。

enter image description here

在列d我檢查,如果從乙列值在列A

=MATCH(B3;$A$2:A2;0)

在B列我做相同的反向出現在上面的行。

=MATCH(A5;$B$4:B4;0)

如果值沒有出現MATCH返回錯誤#...,所以在列G和HI改變這種成0

=IF(ISERROR(D5);0;D5)

在列季檢查,如果這兩個位置平等,如果他們不是零。

=AND(G5>0;H5>0;G5=H5)

如果在列J爲真,那麼我打印「錯誤」,在L列

我希望這會幫助你。

+0

事實上,如果字母「d」在B6中,這將不起作用。原因是MATCH()函數尋找第一次出現 - 這是該解決方案的弱點。 –

2

我發現我以前的帖子就不會在所有情況下,例如工作當我把「d」放入B6時。

所以我提出了另一個基於值連接的解決方案。想法是我連接列A和B中的值(列D = =CONCATENATE(A4;B4))。我在列E連接列B和A(=CONCATENATE(B4;A4))。

而且我在列D的上排(=IF(ISERROR(MATCH(E5;$D4:D$4;0));0;MATCH(E5;$D4:D$4;0)))中尋找E列的位置。

而且我必須對重複出現的「良好」關係進行另一種控制(不會在第11行失敗)。所以列G = =IF(F5>0;INDEX($F4:F$4;F5);0)

在列I有一個最終evalutation =IF(AND(F4>0;G4=0);"error";"")

enter image description here