- ベストアンサー
EXCELで住所の並べ替え
EXCELで住所の並べ替えをやりましたが、昇降順ではあいうえお順と なってしまい、うまく並びません。 このような住所で並べ替えたいのですが、 例)名古屋市中区大須4丁目15-90 名古屋市中区大須4丁目15-90 名古屋市中区大須4丁目15番90号 名古屋市中区大須4丁目15番90号とか同じ住所で 入力がいろいろありますので、ひとかたまりに表示されず、 行が飛んで(離ればなれに)表示されてしまいます。 ひとかたまりで表示する方法(関数)は、ないのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
住所のほかに、郵便番号は無いのですか? 郵便番号があれば、郵便番号と住所で並び替えしてみてください。 http://morgan.co.jp/kiso/5excel-5.htm
その他の回答 (4)
- panther712
- ベストアンサー率18% (2/11)
住所の隣のセルに、入力ルールを統一したものを入力するのがよいかと。 統一するときには・・・ 丁目 ⇒ - に置換 - ⇒ - に置換 番 ⇒ -に置換 といった具合に全部置換し、最後にASC関数を使って全角英数、カタカナを半角にすれば統一できます。 ただし、番地を変更するときに 住所地名に「番」を含むものがあると、それもハイフンになってしまうので、 気をつけてください。
お礼
panther712さん ご回答をいただきありがとう、ございました。 今回はEXCELデータをACCESSのクエリ変換し、ひとかたまりの データを作りました。 ポイント付与ができなくて、ごめんなさい。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 同じフォームにさせればよいのではないでしょうか? ということは、最初に出てきた数字から後は、全部、半角の数字にすればよいわけです。 標準モジュールに、以下のコードを貼り付けて Function PickupAddNumber(strText As String) Dim buf As String Dim i As Integer Dim Matches As Object Dim Match As Variant strText = StrConv(strText, vbNarrow) With CreateObject("VBScript.RegExp") .Global = True .IgnoreCase = True .Pattern = "\d+" Set Matches = .Execute(strText) For Each Match In Matches If i = 0 Then i = Match.FirstIndex End If buf = buf & "-" & Match.Value Next If buf <> "" Then PickupAddNumber = Mid$(strText, 1, i) & Mid(buf, 2) Else PickupAddNumber = strText End If End With buf = "" i = 0 End Function ワークシートでは、 適当な場所にこのような式を入れて、 =PickupAddNumber(A1) ・ ・ ・ とすれば、みんな同じものになります。 単に、並べるためのデータですから、正しく出なくても、良いと思います。 名古屋市中区大須4丁目15-90 名古屋市中区大須4-15-90 名古屋市中区大須4丁目15-90 名古屋市中区大須4-15-90 名古屋市中区大須4丁目15番90号 名古屋市中区大須4-15-90 名古屋市中区大須4丁目15番90号 名古屋市中区大須4-15-90
お礼
Wendy02さん ご回答をいただきましてありがとう、ございました。 今回はEXCELデータをACCESSのクエリ変換を使って 番地に全角・半角又、アパート名が含まれている住所を ひとかたまりに、まとめました。 言い忘れましたが、番地は全角で使いたいのです。それで マクロの内容がわかりませんし、使う自信がないので今回は 使いませんでした。 ポイント付与ができないのも、私の不徳の致すところです。 ごめんなさい。
- koko88okok
- ベストアンサー率58% (3839/6543)
下記URLのページをご覧下さい。 「数値に見えるものはすべて数値として並べ替えを行う。」に設定して、並べ替えを行うと、ご希望のような並べ替えができるようです。 特に、設定しない場合は、「数値とテキスト形式の数値を分けて並べ替えを行う。」に設定されているようです。 「数値と文字の並べ替え」 http://officetanaka.net/excel/function/tips/tips40.htm 邪魔にならない列を使って、数値と文字列の数値を入力して、並べ替えの操作をすると、ホームページのようなダイアログが表示されました。 お試しください。
お礼
koko88okokさん ご回答をいただきありがとう、ございました。 並べ替え前のダイヤボックスの意味も今まで深く 考えていませんでした。 ただ、OKボタンを押していました。
- imogasi
- ベストアンサー率27% (4737/17070)
>ひとかたまりで表示する方法(関数)は、ないのでしょうか? そんな便利な関数なんかないよ。 関数は行の並べ替えは不得意です。 関数は並べ替えに適したように変換するのに使える場合はあるかもしれない、程度です。 ーー 並べ替えは、文字列という値・数値、「フリガナ」という値で、あくまで値で行うので、個々の行のその値を並べ替えに適したように統一しないとだめです。 ーー 下記でもやってみて、その後、うまくいかない点を再質問したら。 質問の表現振りから、この質問の課題を完全に、個別行で手作業以外でやるのは、エクセル力不足のように見える。適当に手作業訂正入力を取り入れないと、実現が難しいと思う。 (1)まずデーター並べ替えーオプションー「フリガナを使う」だが フり仮名を表示して、フリガナが不統一になっていないか調べること。=PHONETIC(A1)と空き列に、いれて、漢字のままの行やフリガナがおかしい行を訂正する。 (2)丁目と番地部の数字などに、半角全角の不統一を、全角に統一する。空き列に=JIS(A1) (3)丁目・番地の文言ありとなしのものがあるので、「丁目」漢字入りに統一する。 例えば =IF(ISERROR(FIND("-",A1)),A1,MID(A1,1,FIND("-",A1)-1)&"番地"&MID(A1,FIND("-",A1)+1,LEN(A1)-FIND("-",A1))) これがが役立つかどうか。 (4)番は番地に統一(置換で番ー>番地を行って、多分他に被害を及ぼさないだろう。「番町」「番場町」などあれば狂うが。 >入力がいろいろありますので あとどういう不統一があるかな(例スペースの有無とか)。それを具体的に見つけるのが、この質問課題の仕事。その後統一のための「策」を知る。>いろいろある、で済ますようなものでなく、質問にも不統一点を書かないと答えようがないし、それぞれが、本質問コーナーの1課題ぐらいのものですよ。
お礼
imogasiさん ご回答をいただきありがとう、ございました。 今回、EXCELデータをACCESSのクエリ変換し、 番地が全角または半角またはアパート名があるもの、 丁目が”-”になっているものなどをひとかたまりに まとめました。 ご指摘のとおり、後は手作業で時間がかかると思います。 ポイント付与ができなくて、ごめんなさい。 時間がないので自分なりの確実な方法を選んで行きたい。
お礼
kokoroneさん ご回答をいただきありがとう、ございました。 悩んでいたので すごく勇気づけられました。 以外な簡単な方法があるんだと思いました。