2011-03-07 51 views
4

我有一個Excel電子表格的以下數據:返回如果所有的Excel列值不同意

A B C 
1 b b b 

我想提出一個公式列,每個(文本)值進行比較後的數據在行中,如果它們都相同,即A = B = C,則返回TRUE。如果一個或多個值不同意,我希望它返回FALSE。即

A B C D 
1 b b b TRUE 
2 b e b FALSE 
3 e b b FALSE 

我知道像邏輯功能,因此可以構建像

AND(A1=B1,A1=C1.. etc),然而,這一聲笨拙儘快得到的列數的增加。

重構數據是不可行的。

有誰知道OOTB/VB解決方案?

回答

7

如果countif找到與count相同的號碼,那麼它們都是相同的。

=IF(COUNTIF(A1:C1,A1)=COUNTA(A1:C1),"true","false") 

希望這是你正在尋找的,你只需要擴展你想測試的列的範圍。

更新

正如評論指出,這不能返回正確的結果,如果數據集有空白單元格。

這將返回false即使範圍內的空白單元格:

=IF(AND(COUNTIF(A1:C1;A1)=COUNTA(A1:C1);COUNTBLANK(A1:C1)=0);"true";"false") 
+0

非常好。這是一種享受。 – trickwallett 2011-03-07 15:14:50

+0

@trickwallett,沒問題! – 2011-03-07 15:16:27

+1

如果其中一個列值爲空,FYI - 不起作用 – Jon 2013-02-14 22:00:45

1

這裏是一個VBA UDF:既要區分大小寫刪除選項比較文本

Option Explicit 
Option Compare Text 
Public Function AllSame(theRange As Range) As Boolean 
    Dim vR As Variant 
    Dim vC As Variant 

    AllSame = True 
    vR = theRange 
    If IsArray(vR) Then 
     vC = vR(1, 1) 
     For Each vC In vR 
      If vC <> vR(1, 1) Then 
       AllSame = False 
       Exit For 
      End If 
     Next vC 
    End If 
End Function 
1

雖然會比較慢一些,你也可以使用數組公式(在鍵入單元格後按下Ctrl + Shift + Enter):

{=IF(SUM(COUNTIF(A1:C1,A1:C1))=POWER(COUNTA(A1:C1), 2),"true","false")} 

即使範圍內有空單元格,這也可以工作。

UPDATE:
此數組公式也適用,通過確保有隻有1個在一系列獨特的價值。即使在範圍內有空白,它也會返回準確的值:

{=SUM(IFERROR(1/COUNTIF(A2:C2,A2:C2), 0)) = 1} 
相關問題