2012-10-18 15 views
17

Excelで文字列データの列にサブ文字列が表示される回数をカウントしようとしています。下記の例をご覧ください。Excelで文字列内の部分文字列の数をカウントする数式

文字列データの列(ツイート)は次のようになります。私が使用したい

B 
1 username 
2 AwesomeUser 

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

"ストリング"(Twitterのスクリーンネーム)を用いたカラムのようになります数式を使用して、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")) 

を残念ながら、私はそう数える文字が(ハイパワーPC上でも動作しません、16,000列BのエントリとAで数万人を持っていますまた、関数が返す結果は疑わしい)。

私が使用して考えた:

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

が、COUNTIFはスター事業者との文字列が必要です。私は、データの量のためにセル参照を使用する必要があります。

私の質問:どのように私はこれのための数式を使用することができます知っている? COUNTIFを使用している場合、ステートメントの条件部分でセル参照を取得するには(または、関数を使用してCOUNTIFステートメントの条件部分内で参照されるセルの文字列を置換します)。

私はのデータを解析できることを知っていますが、Excelでそれを行う方法を知りたいと思います。あなたがほとんど存在し

+2

なおあなたが引用しているSUMPRODUCT式は、Chris 'COUNTIF関数とは少し違うことをしています。 COUNTIFは各セルをたかだか1回だけカウントするので、各セルは1または0のスコアを付けます。 SUMPRODUCT式は、個々のセルに複数回表示されていても「ALL」インスタンスまたは「ユーザー名」を数えます。列全体を使用するのではなく範囲を制限する必要がある数式を使用する場合は、 –

答えて

34

、Y-文字列に

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

(エクセル2010でテスト)のx文字列の発生のための

+1

+1 = 10,001 :) – RocketDonkey

+0

クリス:それは答えのようです。助けてくれてありがとう!私は昨夜の連結を試みたが、私は構文を台無しにしているに違いない。 – Andrew

+1

CHRIS、これは動作しません。次のように試してください:b1タイプ "1"、今度はa2: "s1df1、a3:" dsad "、a4:" sd'1 "、a5:" sdf1111 " –

1

非常にシンプルなExcelソリューション( "ABC")を使用します(」 ABC 123 ABC 23dfABC "):

  1. y文字列の長さを特定します。 x =文字列でサポートされている任意の文字の1文字だけをx文字列に追加する(例: "ABC" => "ABC_")、新しい文字列の長さを計算するy1-string 。 Ly1 = len(代入(y、x、x1))。
  2. Y列のX列の出現)のノー=のLy1-Lyの

発生回数:LEN(代替(Y、X、X1)) - LEN(Y)

理解のための命名法: X列 "ABC" X1列: "ABC_" Y列 "ABC 123 ABC 23dfABC" Y1列: "" ABC_ 123 ABC_ 23dfABC_」

関連する問題