• ベストアンサー

Excelでの漢字データ集計

エクセルで漢字のデータを集計したいのですが、 例えば、 亜希子 麻美 亜美 というデータがあった場合に 亜2 希1 子1 麻1 美2 という感じで漢字一文字ずつの頻度を調べる関数が知りたいです。 どなたかわかる方いらっしゃいませんか。 よろしくお願いいたします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 関数での方法をご希望のようですが結構面倒なので、 VBA向きの質問だと思いますので、手っ取り早くVBAでやってみました。 ↓の画像のようにA2セル以降のデータをD・E列に表示するとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, k As Long, lastRow As Long Dim str As String, c As Range Application.ScreenUpdating = False lastRow = Cells(Rows.Count, "D").End(xlUp).Row If lastRow > 1 Then Range(Cells(2, "D"), Cells(lastRow, "E")).ClearContents End If For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row For k = 1 To Len(Cells(i, "A")) str = Mid(Cells(i, "A"), k, 1) Set c = Range("D:D").Find(what:=str, LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then With Cells(Rows.Count, "D").End(xlUp).Offset(1) .Value = str .Offset(, 1) = 1 End With Else c.Offset(, 1) = c.Offset(, 1) + 1 End If Next k Next i Application.ScreenUpdating = True End Sub 'この行まで ※ A列の文字を1文字ずつ舐めるように検索しています。 ※ 関数でないので、A列のデータ変更があるたびにマクロを実行する必要があります。 ※ 本来であればD列の昇順に並び替えをすれば表としては判りやすいと思うのですが、 そこまでは行っていません。m(_ _)m

その他の回答 (4)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

一般機能で対応するなら以下のような手順が簡単です。 元データがA列にあるなら、そのデータをC列に貼り付け(直接A列で処理してもよい)列幅を1文字分にして、ホームタブの「編集」「フィル」「両端揃え」にします(C列のようになります)。 次に、上記の操作で1文字ごとに分割されたデータをコピーし、E1セルに貼り付け、そのままデータタブの「重複の削除」をクリックします(E列のような重複のない文字の一覧が表示されます)。 最後にF1セルに以下の式を入力して下方向にオートフィルすればご希望の集計ができています。 =COUNTIF(C:C,E1)

  • ryo_ky
  • ベストアンサー率47% (112/237)
回答No.4

A列:亜希子,麻美,亜美 B列:亜,希,子,麻,美 と書いてあったとすれば, =COUNTIF(A$1:A$3,"*"&B1&"*") これを下方向にオートフィルすればできると思います.

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

>という感じで漢字一文字ずつの頻度を調べる関数が知りたいです。 検索対象の文字列を全て連結し、それを数式内で1文字ずつの配列データに置き換えて個数を調べる方法になります。 A2~A8に対象の文字列があるとしてB2~B8セルへ1文字ずつ切り出します。 B2=IF(COUNTIF(B$1:B1,MID(A$2&A$3&A$4&A$5&A$6&A$7&A$8,ROW(B1),1)),"",MID(A$2&A$3&A$4&A$5&A$6&A$7&A$8,ROW(B1),1)) B2をB8までコピーします。 C列にB列へ切り出された1文字ずつA列の文字列からカウントします。 C2=IF(B2="","",SUMPRODUCT((MID($A$2&$A$3&$A$4,ROW($A$1:$A$7),1)=B2)*1)) C2をC8までコピーします。 Excelの組込み関数にはセル範囲を指定して文字列を一挙に連結するものが無いので対象のセルを1つずつ選択して&で連結するかCONCATENATE関数で対象セルを列記します。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

「関数で一発」は無理かも。 1)MID関数で1文字単位に分解し、 2)別シートにでも縦列に整形し 3)ソートして 4)データ>集計で小計を取る

takakohiroko
質問者

補足

回答ありがとうございます!!! お手数かけてしまって大変申し訳ないのですが、 ・MID関数 ・整形 ・ソート の具体的なやり方を教えていただけると嬉しいです!!!

関連するQ&A