• ベストアンサー

文字列でもっとも多く言葉を抽出したい

  A 1 田中佐藤 2 田中高田 3 佐藤田中 とあったとき、 もっとも多く使われている文字が「田中」であると他のセルに示したいのですが そのような関数はあるでしょうか 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

回答No2です。F2への入力の式は次の式に変更してください。 =IF(E2="","",IF(COUNTIF(E$2:E2,E2)=1,ROUND((COUNTIF(E:E,E2)*1000+1/ROW(A1)),3),""))

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

文字列をどこで切って一つの文字列にするかは別の手段がない限り不可能ですね。 ここではA列の2行目か下方に田中佐藤などの入力があるとして、それを例えば田中 佐藤のように文字列の間にスペースを入れることにします。その後にA列を選択して「データ」タブから「区切り位置」を選択し、表示される画面で「次へ」をクリック、次の画面で「スペース」にチェックを付けて「次へ」、最後に「完了」と操作をします。 それによってA列の文字列はスペースごとの文字列となってA,B,C列などに表示されます。 ここでは仮にC列までに文字列が表示されるとします。 そこでどのような文字列の種類があるのかが分かりませんし、それを明らかにするためにも、またその数を調べるためにもE2セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(ROW(A1)<=COUNTA(A$2:A$1000),INDEX(A$2:A$1000,ROW(A1)),IF(ROW(A1)<=COUNTA(A$2:A$1000)+COUNTA(B$2:B$1000),INDEX(B$2:B$1000,ROW(A1)-COUNTA(A$2:A$1000)),IF(ROW(A1)<=COUNTA(A$2:A$1000)+COUNTA(B$2:B$1000)+COUNTA(C$2:C$1000),INDEX(C$2:C$1000,ROW(A1)-COUNTA(A$2:A$1000)-COUNTA(B$2:B$1000)),""))) F2セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(E2="","",IF(COUNTIF(E$2:E2,E2)=1,ROUND((COUNTIF(E:E,E2)*1000+1/ROW(A1)),1),"")) そこでお求めのデータですがH,I列に表示させることにしてH2セルから下方には上位1位からの文字列を下方に表示させることにして、I2セルから下方にはH列の文字列が何個含まれていたかを表示させることにします。 お求めのデータは第1位だけの文字列の名前ですからH2セルのデータのみで良いのですが。 H2セルには次の式を入力してI2セルまでオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。 =IF(ROW(A1)>COUNT($F:$F),"",IF(COLUMN(A1)=1,INDEX($E:$E,MATCH(LARGE($F:$F,ROW(A1)),$F:$F,0)),IF(COLUMN(A1)=2,LARGE($F:$F,ROW(A1)),"")))

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

一番多く出ている文字は「中」ですよ……と、言う突っ込みはおいておいて。 登場する名前のリストが別の場所にあるのならば次の様な方法で可能です。 添付の図では、D2以下に名前のリストがある物とします。 C2に =SUMPRODUCT(1*ISNUMBER(FIND(D2,$A$1:$A$3))) と、入れて下にコピー。 これで名前リストにある名前の登場回数が判ります。 更に最多登場名前を表示するなら(最多が複数名いる場合は、リストの上にある名前を表示)。 =VLOOKUP(MAX(C2:C5),C2:D5,2,FALSE)

関連するQ&A