2015-08-08 30 views
0

我有一個包含多組數據的Excel列。我想找到計數中所有不同記錄集的數量,然後在同一個Excel中將其打印在工作表2的單元格中。在行中計算不同的單詞並在工作表2中粘貼計數

客戶

*巴寶莉羣P

* CA Technologies的

* CA Technologies的

* CA Technologies的

* CA Technologies的

* CA技術

* CA技術

* CA技術

CSM麪包店SOLUT

Deckers戶外

美泰公司(GLO

美泰公司(GLO

Mattel Inc.(Glo

美泰公司(GLO

美泰公司(GLO

美泰公司(GLO

美泰公司(GLO

河牀TECHNOL

河牀TECHNOL

河牀TECHNOL

河牀TECHNOL

河牀TECHNOL

河牀TECHNOL

斯姆爾菲特卡帕的Gr

斯姆爾菲特卡帕的Gr

斯姆爾菲特卡帕的Gr

斯姆爾菲特卡帕的Gr

的Thermo Fisher鈧

的Thermo Fisher鈧

的Thermo Fisher鈧

的Thermo Fisher鈧

的Thermo Fisher鈧

的Thermo Fisher鈧

的Thermo Fisher鈧

對於上述數據。 結果應該是8,因爲有8個客戶名稱。但是那些在列中重複。

計數的結果應打印在工作表2單元格中。

+0

我們的位置在這個問題上,你有沒有收到你的答案? –

回答

0

您可以使用此VBA代碼,假設你的數據在Sheet1!A2:A100和輸出是Sheet2!A1

Dim row As Integer, start_row As Integer, end_row As Integer, v As String, concat As String, count_distinct As Integer 
start_row=2 
end_row=100 
concat="~" 
For row = start_row to end_row 
    v=Sheet1.Range("A" & row) 
    If InStr(concat,v)<=0 Then concat=concat & "~" & v 
Next row 
count_distinct=UBound(Split(concat,"~")) 
Sheet2.Range("A1")=count_distinct 

計數是count_distinct和值在Split(concat,"~")

然而,你不」 t需要VBA過濾出重複項,

只需閱讀Filter for unique values with excel中的「刪除重複值」部分,它「SA內置的功能

+0

這可能適用於上面的數據,但想象一下'concat'是'〜jack〜giant',而你的下一個單元格包含單詞'ant'。你的'InStr()'語句會在'巨'中找到它,而不包含它。另外,你以'〜'開始,你的第一個匹配加上'「〜」&v',給你'「~~」&v'。您應該添加'〜'_after_'v'來分隔您的輸入。然後,改變你的'InStr()'函數來找到''〜「&v&」〜「'而不是'v'。 – Bond

1

以下數組公式將依靠Sheet1在A列中唯一的值,然後把結果A1Sheet2

Dim s As String 
s = "Sheet1!" & Sheet1.Range("A1", Sheet1.Range("A1").End(xlDown)).Address 
Sheet2.Range("A1") = Evaluate("=SUM(1/COUNTIF(" & s & "," & s & "))") 
+0

哇,這很整齊!你介意解釋這個公式背後的邏輯嗎? –

+0

@UriGoren - 當然。這是一個數組公式。因此,範圍中的每個單元格都會按公式處理。 'COUNTIF()'函數計算每個值被找到的次數。想象一下名稱「Bob」出現在列中四次。每發現一次,COUNTIF()都會返回4。所以每個「Bob」的出現只應該算作'1/4'。當你添加所有東西('SUM()')時,你會得到'1'唯一值。然後'Evaluate()'當然可以讓你傳遞一個公式作爲一個字符串,並將公式的_value_返回給單元格而不是公式本身。 – Bond

相關問題