2017-01-09 70 views
1

我有一個數字範圍,我需要確定每個單元格的第一個數字是否在相應行的任何位置重複。統計一個範圍內的數字的多個實例

例如,在下面的第2行中,第2列和第3列都以3開頭。我知道如果我做= LEFT(TRIM(cell))來獲取第一個數字,但是如何查找行在行中有重複的數字,因此行1未標記,但行2是?

100|600|203|700| |  
202|302|301|400|600| 
+0

你想在哪裏出現「標記」? –

+0

標記(例如「Y」)將顯示在最後一列右側的列 – amwakatsuki

+0

您能分享您試圖用於不同答案的屏幕截圖嗎?它會幫助我們幫助你。 – Pomul

回答

2

使用輔助塔與此作爲數組公式:

=SUMPRODUCT(--(COLUMN($A1:$E1)<>MATCH(INT($A1:$E1/100),INT($A1:$E1/100),0)))>0 

作爲一個陣列式,它必須與確認Ctrl鍵移輸入,而不是退出編輯模式時輸入。如果正確完成,Excel將在公式周圍放置{}

enter image description here

+0

該公式爲我返回了一個錯誤。這可能是因爲某些色譜柱在第4或第5個點上有空白單元格。 – amwakatsuki

+0

空白應該無關緊要,如果您在兩件事中遇到錯誤之一。 1你沒有用Ctrl-Shift-Enter作爲數組公式輸入。 2.您的本地設置使用';'而不是'''來描繪公式中的條件。 –

0

一種方式做到這一點是使用這個公式爲基礎:

=IF(ISERROR(FIND(LEFT(TRIM(A1),1),B1)),FALSE,"Row "& ROW(A1)) 

根據您要如何檢查行,你能適應它。您可以使用一個公式來檢查一個單元格(鎖定A1參考並向右拖動) - 這可以讓您知道匹配的位置,但在工作表上佔用更多空間。 或者,如果你沒有太多的細胞每一行進行檢查,你可以毗連同公式中的所有單元格:

=IF(ISERROR(FIND(LEFT(TRIM(A1),1),B1&C1&D1&E1)),FALSE,"Row "& ROW(A1)) 

我相信加里的學生將有一個更優雅的答案,但!

+0

該解決方案几乎可行,但返回了一些誤報和一些誤報。 – amwakatsuki

+0

然後它沒有做得很好!確保引用是正確的,並且包含數據的所有列都包含在第二個公式中,因爲它當前停在列E.如果列F中的數據將使公式爲True,它將不會被捕獲。 當我向右拖動第一個公式而沒有鎖定引用(例如A1而不是$ A $ 1)時,我得到了錯誤的肯定結果,並且由於使公式True成爲F列的數據(當前未包含公式)。 – Pomul

1

考慮以下UDF()

Public Function AnyDups(rng As Range) As Boolean 
    Dim valu() As String 
    Dim i As Long, L As Long 
    L = rng.Count 
    ReDim valu(1 To L) 
    AnyDups = False 
    If L = 1 Then Exit Function 
    i = 1 

    For Each r In rng 
     valu(i) = Left(r.Value, 1) 
     i = i + 1 
    Next r 

    For i = 1 To L - 1 
     v = valu(i) 
     For j = i + 1 To L 
      If v = valu(j) Then AnyDups = True 
     Next j 
    Next i 
End Function 

例如:

enter image description here

的代碼只是循環通過的最左邊的字符可能的組合在細胞中。

它應該適用於文本或數字數據。

+0

我對VBA不太熟悉,但我會研究它,以便測試它。這可能很有幫助,因爲該過程將被重複使用很多次,並且每次運行一個宏將是一次單擊解決方案(如果我正確理解宏) – amwakatsuki

相關問題