• 締切済み

エクセルで並べ替え

エクセルでデータベースを作ってます。 ある項目の多い順に並べ替えをしたいのですが、何か良い方法はありませんか? 【例】 名前   カナ     出身地     山田   ヤマダ    長崎     田中   タナカ     長崎     山本   ヤマモト    福岡     佐藤   サトウ     東京     西田   ニシダ    福岡     西山   ニシヤマ    福岡 出身地の多い順で並べ替え 福岡>長崎>東京 の様に並べ替える

みんなの回答

noname#52504
noname#52504
回答No.2

#1です。 >ちなみにデータベースとしてエクセルを使用する場合、 >セルに数式や関数は使わないほうがいいのでしょうか? ん~、まず、教科書的な回答としては、 「そもそもExcelをデータベース管理に使うのが無茶」です。 Excelはあくまで「表計算」ソフトで、 想定している用途は「表」や「リスト」の作成管理ですから、 「データベース」と呼べるほど規模の大きいデータを取り扱うのは、 いろいろな意味で無理があります。 ただし「ならどんなソフトでどうすれば良いのか?」となると私には答えられませんし、 導入・運用・保守・管理・引継その他諸々のコストを総合的に勘案した結果、 「多少無理してでもExcelでやりたい」ということはあると思いますので、 以下、あくまで一般論ですが、いくつかアドバイスを。 ----------------------------------------------------------- ●自動再計算をオフにする。  オプションで計算方法を[手動]にして、  必要な時だけF9キー等で再計算する。 ●値として確定する  変化することのない値や、作業に伴って一時的に計算した値は   コピー>編集>形式を選択して貼り付け>値  で、結果を値に確定する  (通常の「表計算」では逆に数式を残しておいた方が良いですが) ●組み込みの機能を活用する  数式だけで(理論的には)たいていのことはできますが、  フィルタ・ピボットテーブル・クエリ等を活用した方が、  処理速度の点で優位です。 ●数式にもよる  先述のCOUNTIFのように、縦方向に参照する数式は、  特定の行の内容や位置が変更されただけで全部再計算ですから、  非常に重たい処理になります。  一方、単に横方向にセルを参照して計算する数式であれば、  再計算負担はそれほど大きくありません。 ●数式の書き方にもよる  一見同じ動作をする数式でも、書き方によって  速い(軽い)数式と遅い(重い)数式があります。   ●作業列を積極的に使う  作業列を使わず、関数をネスト(入れ子に)して一発で計算するような数式は、  一見スマートに見えますが、一般に処理自体は鈍重になります。 ●無駄なエラー処理をしない  「エラー値を見せない」ためだけに   =IF(ISERROR(数式),数式)  みたいにすることがありますが、これでは「2回ずつ」計算することになります。  数式自体はエラー値をそのまま返させておいて、  ・[条件付き書式]でエラー値を白フォントにする  ・[ページ設定]でエラー値を印刷しないようにする  といった対処法の方が軽い処理になります。 ----------------------------------------------------------- 例えば、ご質問の例であれば、出身地の種類は高々47種類しかないので、 【スマートに】COUNTIF一発で書くよりもむしろ、  D2セル:まず、上方について、探してみる   =VLOOKUP(C2,$C$1:E1,3,0)  E2セル:なければ、下方について、数える   =IF(ISNA(D2),COUNTIF(C2:$C$65536,C2),D2) つまり、 「初出の場合のみ数える。初出でなければ、すでに出ている数字を探して使う」 方がはるかに軽い処理になりますし、 いっそのこと、都道府県別の頻度を別表として用意して、 その表からVLOOKUPで探すようにすれば、さらに軽くなります。 以上ご参考まで。長乱文陳謝。

AKIRADA-05
質問者

お礼

回答ありがとうございます。 大変参考になりました。

noname#52504
noname#52504
回答No.1

質問文の例で、 仮に、A1セルから入力されているとすると、 出身地の入力されている列はC列ですね。 また、1行目は見出し行で、データが2行目からだとすると、 D2セルを  =COUNTIF(C:C,C2) として下方にフィルすれば、同じ出身地の人が何人いるかが表示されます。 あとは、D列をキーにして、降順で並べ替えればOK。 ■Excel豆知識20-5:エクセル:並べ替え http://www11.plala.or.jp/koma_Excel/contents3/mame3020/mame302005.html ■Excel豆知識8-2:エクセル:COUNTIF関数 http://www11.plala.or.jp/koma_Excel/contents1/mame1008/mame100802.html

AKIRADA-05
質問者

お礼

回答ありがとうございました。 早速試したところ、期待通りの結果が得られました。 ちなみにデータベースとしてエクセルを使用する場合、セルに 数式や関数は使わないほうがいいのでしょうか? 並べ替えをした時にすごく時間がかかるのですが・・・?

関連するQ&A