• ベストアンサー

Excel(2010)で氏名の頻度の求め方

Excel(2010)で、A列に縦に 山田 鈴木 田中 山田 鈴木 山田 というように氏名の並べてある表があるとします。この表で氏名の頻度が 山田 3 鈴木 2 田中 1 というように表示できる関数または方法があるでしょうか。 この表のように項目が少なければ 山田 鈴木 田中 というセルを作っておいて、VLOOKUP関数で求められますが、実際には約500行ありその中の氏名をすべて手作業で入力するのは大変ですので、重複なくすべての氏名を抜き出すのは実際的ではありません。 以上よろしくお願いします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

フィルタオプションで”重複するレコードは無視する”で抽出すれば簡単です。 エクセル2010基本講座:重複データを削除する http://www4.synapse.ne.jp/yone/excel2010/excel2010_filter24.html

askymmj
質問者

お礼

データタブ→重複の削除、という素人にも判りやすい方法を迅速に教えていただきありがとうございました。そのことでベストアンサーとさせていただきました。

その他の回答 (9)

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

回答No.8にもう1つの見落としがありました。 再びお詫びします。 C2セルへ次の数式を入力し、下へ必要数コピーしてください。 =COUNTIF(A:A,C2) 尚、C列の空欄についてはエラーチェックを配慮していませんので必要なら修正してください。

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

回答No.8の画像に誤りがありました。 お詫びして訂正します。 重複するレコードは無視するにチェックしないとA列の選択範囲がすべて抽出されます。 尚、回答No.5では抽出範囲をC2:C15としていますが、先頭のC1のみの指定で目的通りになります。 他の方法としてはA列の対象範囲をC列へすべてコピーし、「データ」タブの「重複の削除」を実行すれば目的に合うはずです。

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

>この表のように項目が少なければ >山田 >鈴木 >田中 >というセルを作っておいて、VLOOKUP関数で求められますが、 VLOOKUP関数では出現頻度を計数できません。 COUNTIF関数の誤りではないでしょうか? >実際には約500行ありその中の氏名をすべて手作業で入力するのは大変ですので、重複なくすべての氏名を抜き出すのは実際的ではありません。 回答No.5の「データ」タブ→「並べ替えとフィルター」→「詳細設定」の手順で簡単に重複なしの氏名一覧が抽出されます。 貼付画像で「OK」ボタンをクリックすればC1以下の目的の一覧が抽出されます。 D2セルに次の数式を入力して下へ必要数コピーすれば良いでしょう。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.7

常識的に。 1行目はタイトル行としてA1に「氏名」とでも書いてあり,A2以下に山田・鈴木・田中…が列記してあるとして。 >重複なくすべての氏名を抜き出すのは実際的ではありません。 500行1000行程度のデータであれば, 手順: A列をコピーしてC列あるいはシート2のA列に貼り付ける データタブの「重複の削除」を行う 以上で 氏名 山田 鈴木 田中 の重複の無い一覧が瞬殺で作成できます。 COUNTIF関数を使い,それぞれが何個あるか隣のセルで数えさせて完成です。 イミフメイの複雑な数式を教わって,重複の無い一覧を一発で(補助列無しで)計算させる事もやれば出来ますが,行数が多くなってくると加速度的に重たくなっていくので,ご相談のケースではお勧めではありません。 #暇なので。 関数で計算するお勧めの方法は A1に補助列と記入,B1に氏名と記入 B2以下に山田,田中,山田,鈴木…を列記 A2に =IF(COUNTIF(B$2:B2,B2)=1,COUNT(A$1:A1)+1,"") と記入,以下コピー D1に重複の無い一覧と記入 D2に =IF(ROW(D1)>MAX(A:A),"",LOOKUP(ROW(D1),A:B)) と記入,以下コピーして完成。 E2には =IF(D2="","",COUNTIF(B:B,D2)) 以下コピー。

askymmj
質問者

お礼

データタブ→重複の削除、でご指摘のとおり瞬殺でできるのですね。判りやすい説明をありがとうございました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

 今仮に、 山田 鈴木 田中 山田 鈴木 山田 というデータがSheet1のA2以下に入力されていて、 Sheet2のA列~B列の2行目以下に 山田 3 鈴木 2 田中 1 の様に表示させるものとします。  その場合、まず使用していない適当なシート(ここでは仮にSheet3とします)の適当な列(ここでは仮にA列とします)の2行目のセル(Sheet3のA3セル)に次の様な関数を入力して下さい。 =IF(INDEX(Sheet1!$A:$A,ROW())="","",IF(COUNTIF(Sheet1!$A$1:INDEX(Sheet1!$A:$A,ROW()),INDEX(Sheet1!$A:$A,ROW()))=1,ROW(),"")) 或いは =IF(Sheet1!$A2="","",IF(COUNTIF(Sheet1!$A$1:$A2,Sheet1!$A2)=1,ROW(),""))  次に、Sheet3のA2セルをコピーして、Sheet3のA3以下に貼り付けて下さい。  次に、Sheet2のA2セルに次の関数を入力して下さい。 =IF(ROWS(A$2:A2)>COUNT(Sheet3!$A:$A),"",INDEX(Sheet1!$A:$A,SMALL(Sheet3!$A:$A,ROWS(A$2:A2))))  次に、Sheet2のB2セルに次の関数を入力して下さい。 =IF($A2="","",COUNTIF(Sheet1!$A:$A,$A2))  次に、Sheet2のA2~B2のセル範囲をコピーして、Sheet2のA列~B列の3行目以下に貼り付けて下さい。  以上です。

askymmj
質問者

お礼

素人ですので各関数の意味が了解できませんでしたが、回答いただきありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

頻度ーー>Frequencyという名の関数があるが、文字列を対象にしては使えないようだ。 ーー 手早く、重複しないデータを抽出するかの方法を知っているか肝心。 例データ A列 氏名 山田 田中 鈴木 大下 山田 田中 山田 田中 山田 ーー エクセル2013 重複なくデータ抽出する方法 それ以前のバージョンにもある 参考 http://excel-plus.jp/2015/09/05/1884 「データ」タブ 「並べ替えとフィルター」 「詳細設定」 フィルター オプションの設定 のウインドウ が出る データと抽出先範囲の範囲指定して データの範囲 A1:A15 抽出範囲 C2:C15 「重複するレコードは無視する」はチェックを入れておく。 ーー 結果 C列 山田 田中 鈴木 大下 D2に =COUNTIF($A$2:$A$15,C2) この式を下方向に式を複写 結果 C2:D5 山田 4 田中 3 鈴木 1 大下 1

askymmj
質問者

お礼

丁寧な回答をありがとうございました。2010でも同じ操作ができました。

  • kkkkkm
  • ベストアンサー率66% (1737/2608)
回答No.3

No2の訂正です 山田さんがA1にあるとして は 山田さんなどの氏名がA1から始まるとして の方が正しい言い回しでした。 なおBiの式は下方向にコピーしてください。セルを選択して右下の所にカーソル多くと+になるのでその時にダブルクリックすると一気にA列の連続したデータがある一番下までコピーされます。

askymmj
質問者

お礼

ありがとうございました。一括入力のやり方が参考になりました。

  • kkkkkm
  • ベストアンサー率66% (1737/2608)
回答No.2

山田さんがA1にあるとしてB1に =COUNTIF(A:A,A1) でいかがですか

askymmj
質問者

お礼

VLOOKUPではなくCOUNTIFでした。ご指摘ありがとうございました。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

ピボットテーブルを使ってみてください。 表内の任意のセルを選択→挿入→ピボットテーブル

askymmj
質問者

お礼

迅速な回答をありがとうございました。素人同然なのでピボットテーブルを知りませんでしたが。ゆっくり考えてみたいと思っています。

関連するQ&A

専門家に質問してみよう