Excelデータの並び替えの質問です。


列Aには、○○1丁目、○○2丁目という具合に、住所が2000件ほど「あいうえお順」に整列しています。

続いて、列Bには整列されていない住所が2000件あります。
内容はまったく同じなのですが、きちんと列Aと同じように整列していません。
列Bの並びを、列Aと同じようにしたいのです。

また、列C,D・・・以下には、丁目(列B)に付随したデータ(人口など)が入力されています。

何らかの関数かプログラムで、列B以下のデータを、列Aの並び方に合わせたいのです。
手動で並び替えるのに限界を感じています(笑)

うまくやる方法をご存知の方は、どなたか方法を教えていただけませんか?
VBAは経験がないのですが、ほかのプログラミング言語の経験が少しあります。

回答の条件
  • 1人2回まで
  • 登録:2007/02/01 07:43:35
  • 終了:2007/02/01 21:03:06

ベストアンサー

id:hiko3karasu No.6

hiko3karasu回答回数1058ベストアンサー獲得回数252007/02/01 12:45:08

ポイント100pt

関数vlookup でできます。

例として簡単にさせてもらいます。

 並んだ住所A列

 並んでいない住所B列

 データC列

 住所のデータは行1から行2000までの2000個

 列D、Eは空白

としますね。

まず、B,Cを選択、B列を優先して並べ替えします。

空白の列Dの1行目に

=VLOOKUP(A1,$B$1:$C$2000,1)

列Eの1行目に

=VLOOKUP(A1,$B$1:$C$2000,2)

といれます。

このD1のセルをD2からD2000までコピー、

E1のセルをE2からE2000までコピーします。

 

C列の他にもデータがあるならば、$B$1:$C$2000を変えてください。

その他の回答(5件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012007/02/01 07:51:04

ポイント20pt

プログラムなど組まなくても通常操作だけで出来そうに思いますが、いかがでしょう?

■方法1 B列にもふりがなが存在する場合。

(並び替え1回)B列から一番右の列までを選択 → データ → 並び替え(最優先されるキーはA列) → オプション → フリガナを使う

■方法2 B列にはふりがなが存在しない場合。

(並び替え1回目)A列だけを選択 → データ → 並び替え → オプション → フリガナを使わない

(並び替え2回目)シート全体を選択 → データ → 並び替え(最優先されるキーはA列) → オプション → フリガナを使う

※ファイルをコピーして予備を残した状態でテストしてくださいね。

id:southgate_01

早速のコメントありがとうございます。

教えていただいたとおり、方法2で行ったのですが、思うとおりになりません。

AをBに合わせるのは出来るのですが、BをAに合わせることが出来ません。

どうも、漢字の音読み順に整列しているようです。

2007/02/01 08:28:38
id:garyo No.2

garyo回答回数1782ベストアンサー獲得回数962007/02/01 08:27:06

ポイント20pt

>AをBに合わせるのは出来るのですが、BをAに合わせることが出来ません。

1. Aの左に列を挿入して1,2,3、・・・と連続データを入れておく

2. Aと左の列を一緒にして一度AをBにあわせる

3. Aの左の列とBとBの隣を選択して Aの左の列を使ってソートする

→これでAが元に戻る

4.Aの左の列を削除

1,DDD1丁目,AAA1丁目,1111

2,CCC1丁目,BBB1丁目,2222

3,BBB1丁目,CCC1丁目,3333

4,AAA1丁目,DDD1丁目,4444

4,AAA1丁目,AAA1丁目,1111

3,BBB1丁目,BBB1丁目,2222

2,CCC1丁目,CCC1丁目,3333

1,DDD1丁目,DDD1丁目,4444

1,DDD1丁目,DDD1丁目,4444

2,CCC1丁目,CCC1丁目,3333

3,BBB1丁目,BBB1丁目,2222

4,AAA1丁目,AAA1丁目,1111

id:southgate_01

具体的な手順をありがとうございます。

私の認識不足で、

「AをBに合わせるのは出来るのですが、BをAに合わせることが出来ません。」

ここが間違っていました、AをBに合わせることが出来ていませんでした。

前提が正しければこの方法で出来るはずなのですが、すいません・・

2007/02/01 21:00:21
id:kn1967 No.3

kn1967回答回数2915ベストアンサー獲得回数3012007/02/01 08:31:09

ポイント10pt

方法2はどちらか一方を行うのではなく、

1回目でA列とB列以下を同じ行に位置させ、

2回目でシート全体をA列のあいうえお順に並び替える

というのが手順になっているのですが順番に行いましたか?

もしかして、A列にふりがなが存在していないので元のあいうえお順にならないということでしたら方法3をお試しください。

■方法3 A列にもふりがなが存在していない場合。

(準備)A列の左側(あるいは右側)に1列挿入して上から順に1,2,3,・・・と連番を入れる。

(並び替え1回目)A列と連番を入れた列を選択 → データ → 並び替え → オプション → フリガナを使わない

(並び替え2回目)シート全体を選択 → データ → 並び替え(最優先されるキーは連番を入れた列) → オプション → フリガナを使う

id:Wildboar No.4

Wildboar回答回数25ベストアンサー獲得回数12007/02/01 08:32:51

ポイント10pt

1番目の回答とコメントを読んで・・

A列をB列に合わせることができるのであれば、

まず、A列とB列の間に1列挿入して、そこに1から2000まで縦に連番で数字を入れてください。そして、A列と、あらたに挿入した列(B列になりますね)を選択して、上記方法2で、A列をキーにして並べ替えをします。

この段階で、A列とc列(もとのB列)以降が揃うはずですので、全体を選択して、B列をキーにして並べ替えます。

最後に、あらやに挿入したB列を削除すれば、お望みの表が完成するのではないでしょうか。

id:rikuzai No.5

りくっち回答回数1366ベストアンサー獲得回数1412007/02/01 09:41:55

ポイント10pt

私だったら…まず列Aを正しい並び順のデータとして扱ってナンバリングし、

このデータを元にVLOOKUPを使って列Bの住所に列Aのナンバーをつけるという作業をしてから並び替えますね。

また、最終的には列Aは必要ないのではないですか?

(同じ住所データが二列並んでいる必要性はないような…)

なので、列Aを別シートに転記して利用するようにします。

以下手順です。


  • シートを一枚追加し(これをSheet1とします)、列AをA列にコピー&ペーストします。
  • Sheet1のB1に「1」を入力し、そのままツールバーの「編集」→「フィル」→「連続データの作成」をクリック。「範囲」を列、「種類」を加算、「増分値」を1、停止値を2000(住所データの件数分)を入力してOKします。これでSheet1のB列に2000までの連番が自動的に振られます。
  • Sheet1のA1:B2000までを選択し、A1のすぐ上にある「名前ボックス」に直接「並び順」と記入してエンターします。これで住所データの並び順の範囲に名前がつきます。
  • 元の住所データシートに戻り、列Aの最初のデータの入ったセル(タイトル行があるでしょうからA2でしょう)に以下の数式を入力します。

=VLOOKUP(B1,並び順,2,0)

  • 自動的に住所データに対応した連番が表示されるので、A列の該当セルまで数式をコピーします。
  • A列をキーにデータを並び替えます。これで終了です。

列Aは並び替えが終わったら削除してもいいですし、列の非表示を使っても良いかと。




今後住所データの追加が生じるようなら、Sheet1のA列にデータを追記して、

A列のみ並べ替えた後、増分のナンバリングをし、

「挿入」→「名前」→「定義」の画面から参照範囲を訂正して追加をすれば数式はそのまま使えます。


また、漢字の音読み順になっているということですが、

既存の文字列のフリガナを取り出すという関数もあります。

A1に「東京都」と入っているとして、B1に

=PHONETIC(A1)

と入力するとB1には「トウキョウト」と表示されます。

これを一旦全て表示させてから正しい読みがなになおしてソートすれば正しい並び順になると思います。



以上ご参考まで。

id:hiko3karasu No.6

hiko3karasu回答回数1058ベストアンサー獲得回数252007/02/01 12:45:08ここでベストアンサー

ポイント100pt

関数vlookup でできます。

例として簡単にさせてもらいます。

 並んだ住所A列

 並んでいない住所B列

 データC列

 住所のデータは行1から行2000までの2000個

 列D、Eは空白

としますね。

まず、B,Cを選択、B列を優先して並べ替えします。

空白の列Dの1行目に

=VLOOKUP(A1,$B$1:$C$2000,1)

列Eの1行目に

=VLOOKUP(A1,$B$1:$C$2000,2)

といれます。

このD1のセルをD2からD2000までコピー、

E1のセルをE2からE2000までコピーします。

 

C列の他にもデータがあるならば、$B$1:$C$2000を変えてください。

  • id:southgate_01
    southgate_01 2007/02/01 21:09:03
    私が質問に書いた内容に間違いがあったため、
    当初うまくいきませんでした。

    >住所が2000件ほど「あいうえお順」に整列しています

    見た目が整列しているだけで、振り仮名の有無・整列の確認をしていませんでした。

    >AをBに合わせるのは出来るのですが、BをAに合わせることが出来ません。

    このコメントも不完全でした。
    AをBに合わせることも出来ていませんでした。

    最終的に、hiko3karasu様が教えていただいた方法で、
    あまりにも簡単に望む結果を得ることが出来ました。

    うまく問題が解決して嬉しいところです。
    みなさま、アドバイスありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません