- ベストアンサー
たくさんある単語の種類と個数を調べる方法
エクセル2013のファイルに横11x縦数万の単語があります。 この中にある単語はたくさん種類があるので 単語を決め打ちで個数を調べるには無理があります。 この多数の単語の種類と個数を調べる方法はありませんか。方法はエクセルに限りません。 プログラミングはPHPができます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 横からお邪魔します。 No.2様の方法をそのままVBAでやってみました。 Sheet1のデータをSheet2のA・B列に表示するようにしています。 Sheet1のデータはA列の1行目からあるとし、途中に空白セルはない!いう前提です。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim j As Long, lastRow As Long, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("Sheet1") Set wS2 = Worksheets("Sheet2") wS2.Cells.ClearContents With wS2.Range("A1") .Value = "単語" .Offset(, 1) = "個数" End With For j = 1 To 11 lastRow = wS1.Cells(Rows.Count, j).End(xlUp).Row Range(wS1.Cells(1, j), wS1.Cells(lastRow, j)).Copy wS2.Cells(Rows.Count, "A").End(xlUp).Offset(1) Next j wS2.Range("A:A").RemoveDuplicates Columns:=1, Header:=xlYes lastRow = wS2.Cells(Rows.Count, "A").End(xlUp).Row With Range(wS2.Cells(2, "B"), wS2.Cells(lastRow, "B")) .Formula = "=COUNTIF(Sheet1!A:K,A2)" .Value = .Value End With wS2.Range("A1").CurrentRegion.Sort key1:=wS2.Range("A1"), order1:=xlAscending, Header:=xlYes MsgBox "処理完了" End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m
その他の回答 (3)
- MackyNo1
- ベストアンサー率53% (1521/2850)
No1の回答の補足です。 回答に数式を提示していませんでした。M1セルに入力する数式は以下のような式になります。 =COUNTIF($A:$K,M1)
- keithin
- ベストアンサー率66% (5278/7941)
A列をシート2にコピー貼り付ける B列をその下にコピー貼り付ける C列をさらにその下にコピー貼り付ける : K列を更にその下にコピー貼り付けて、全体を縦一列に整列させる (マクロとか使っても勿論構いませんが、そんなのを工夫してる間に手を動かした方がさっさと結果を出せます) データタブの「重複の削除」で一意のリストをエクセルに作らせる 隣のセルに =COUNTIF(Sheet1!A:K,A1) 以下コピー して個数を数えさせる。
- MackyNo1
- ベストアンサー率53% (1521/2850)
以下のような手順で処理すれば、それぞれの単語数の一覧を作成することができます。 元データから1列空白列を空けた13列目(M列)に1列目から11列目のデータを縦1列に並べてコピー貼り付けします(行数が決まっているなら関数で対応することも可能です)。 次に、M列を選択して、データタブの「重複の削除」で重複のない単語一覧を取得します。 このセルの右側(N1セル)に以下の式を入力して下方向にオートフィルコピー(セルの右下をダブルクリック)すれば、N列に該当する単語数が表示されます。
お礼
予め数の多い単語を除外してからマクロを走らして、 十数分経つと思ってたとおりの結果が得られました。 回答有難うございました。