2012-10-18 57 views
17

我想指望出現在Excel中的字符串數據的列內的子串的次數內算子的出現。請看下面的例子。公式在E​​xcel中的字符串

字符串數據的列(微博)是這樣的:

A 
1 An example string with @username in it 
2 RT @AwesomeUser says @username is awesome 

與「子」(微博網名)的列如下:

B 
1 username 
2 AwesomeUser 

我想用一個公式來計算B1,B2等字符串中出現的子字符串出現在列A中的字符串的次數。例如:搜索B1的公式將返回「2」,而搜索B2將返回「1」。

我不能做這種方式:

=COUNTIF(A:A, "username") 

因爲COUNTIF僅查找字符串,而不是子。這個公式總是返回「0」。

這裏有一個formula我認爲可能做到這一點:

=SUMPRODUCT((LEN(A:A)-(LEN(SUBSTITUTE(A:A,"username",""))))/LEN("username")) 

不幸的是,我在B列16000項和數以萬計的A,所以計算字符不會高功率PC上甚至工作(此外,函數返回的結果是可疑的)。

我想過使用:

=COUNTIF(A:A, "*username*") 

但COUNTIF需要與運營商星的字符串;由於數據量的原因,我需要使用單元格引用。

我的問題:有沒有人知道我可以用一個公式來進行?如果使用COUNTIF,如何在語句的條件部分中獲取單元格引用(或使用函數替換CO​​UNTIF語句的條件部分中引用的單元格中的字符串)?

我知道我可能解析數據,但我想知道如何在Excel中做到這一點。

+2

注意, SUMPRODUCT公式引用與Chris的COUNTIF函數略有不同。 COUNTIF最多隻會對每個單元格進行一次計數,因此每個單元格的「得分」爲1或零。 SUMPRODUCT公式會統計所有實例或「用戶名」,即使它在任何單個單元格中出現多次 - 如果要使用該公式,則應限制範圍而不是使用整列 –

回答

34

就快成功了,用

=COUNTIF(A:A, "*"&B1&"*") 

(在Excel 2010中測試)

+1

+1,即= 10,001 :) – RocketDonkey

+0

克里斯:這似乎是答案。感謝您的協助!我昨晚試過連接,但是我一定弄錯了語法。 – Andrew

+1

克里斯,這是行不通的。請嘗試以下操作:在b1中鍵入「1」,現在a2:「s1df1,a3:」dsad「,a4:」sd'1「,a5:」sdf1111「 –

1

一個非常簡單的Excel解決方案X-字符串( 「ABC」)爲Y串(發生」 ABC 123 ABC 23dfABC「):

  1. 確定y字符串的長度。 LY = LEN(Y)
  2. 代入x串由X1-串(追加僅有1任何支持的字符至x串的炭。例如 「ABC」=> 「ABC_」),並計算新的字符串Y1-串的長度。 Ly1 = len(替代(y,x,x1))。
  3. 沒有沿y串x串的發生)的= LY1-LY

數次發生的:LEN(替代(Y,X,X 1)) - LEN(Y)

命名爲理解: X-字符串: 「ABC」 X1字符串: 「ABC_」 Y型字符串: 「ABC 123 ABC 23dfABC」 Y1-字符串: 「」 ABC_ 123 ABC_ 23dfABC_」