人に聞けない痔の悩み、これでスッキリ >>

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

このQ&Aに関連する最新のQ&A

A 回答 (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で探すようにすれば、さらに軽くなります。

以上ご参考まで。長乱文陳謝。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

大変参考になりました。

お礼日時:2008/03/23 09:58

質問文の例で、


仮に、A1セルから入力されているとすると、
出身地の入力されている列はC列ですね。
また、1行目は見出し行で、データが2行目からだとすると、

D2セルを

 =COUNTIF(C:C,C2)

として下方にフィルすれば、同じ出身地の人が何人いるかが表示されます。
あとは、D列をキーにして、降順で並べ替えればOK。

■Excel豆知識20-5:エクセル:並べ替え
http://www11.plala.or.jp/koma_Excel/contents3/ma …

■Excel豆知識8-2:エクセル:COUNTIF関数
http://www11.plala.or.jp/koma_Excel/contents1/ma …
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
早速試したところ、期待通りの結果が得られました。

ちなみにデータベースとしてエクセルを使用する場合、セルに
数式や関数は使わないほうがいいのでしょうか?
並べ替えをした時にすごく時間がかかるのですが・・・?

お礼日時:2008/03/10 01:27

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング