- ベストアンサー
Excelでの漢字データ集計
エクセルで漢字のデータを集計したいのですが、 例えば、 亜希子 麻美 亜美 というデータがあった場合に 亜2 希1 子1 麻1 美2 という感じで漢字一文字ずつの頻度を調べる関数が知りたいです。 どなたかわかる方いらっしゃいませんか。 よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! 関数での方法をご希望のようですが結構面倒なので、 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)
- ryo_ky
- ベストアンサー率47% (112/237)
- bunjii
- ベストアンサー率43% (3589/8249)
>という感じで漢字一文字ずつの頻度を調べる関数が知りたいです。 検索対象の文字列を全て連結し、それを数式内で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)
「関数で一発」は無理かも。 1)MID関数で1文字単位に分解し、 2)別シートにでも縦列に整形し 3)ソートして 4)データ>集計で小計を取る
補足
回答ありがとうございます!!! お手数かけてしまって大変申し訳ないのですが、 ・MID関数 ・整形 ・ソート の具体的なやり方を教えていただけると嬉しいです!!!