- ベストアンサー
エクセルで住所を並べかえる方法
- エクセルで住所を番地順に並べかえる方法を教えてください。文字列として認識されてしまっているため、1つずつ数字に変換したいです。
- 質問者はエクセルで住所録を番地順に並べ替えたいと考えていますが、番地部分の数字を認識させることができません。関数を使用して解決策を見つけたいとのことです。
- 質問者はエクセルで住所を並べ替える際、番地の部分がうまく認識されずに困っています。関数を使用して1つずつ数字に変換する方法を教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
まぁ、ご多分に漏れずなのですが、 関数だけだと物凄く難しいと思いますよ。 そんなわけで、次善の策として・・・ 日本の住所がなぜ「郵便番号」で分けられているか。 ソレを考えると答えが見えてくるような気がします。 とりあえず、 https://support.microsoft.com/ja-jp/help/882935 参考にどうぞ。 あとはどの辺りで妥協するか?ですね。
その他の回答 (6)
- bunjii
- ベストアンサー率43% (3589/8249)
>関数を使ってうまくできないでしょうか。 作業用の列を幾つも使えば可能かも知れません。 しかし、◯丁目△番地□号と△番地□のように住所の番地表示が一様ではありませんので番号のみを切り出しても優先順位を判断できません。 また、ビル名やマンション名と部屋番号も表示の仕方が一様ではないため部屋番号と番地の枝番(□号)の区別もできません。 郵便番号を優先として住所と併せた並び替えに止めることをお薦めします。 VBAで数字のみを切り出して複数列へ振り分けできますが、あなたの知識レベルでコードを理解できないと無意味なので提示を差し控えます。
お礼
ありがとうございます。 何列か使い、2番目の数字(枝番)までは取り出して並べかえることができました。 それ以降は手で出来る範囲で並べ替えることにします。
- imogasi
- ベストアンサー率27% (4737/17069)
エクセル関数しかできないのに、その範囲内でやりたい、というのは、手足を縛って水中で泳ぐ、非常事態で使うためである、古式泳法のようなものです。エクセルの素人が考える方法ではない。 なんの目的のために質問するのか?特殊例、郵送料を節約とか。 郵便番号列を作って、それで並べる、丁目番地は別途考慮するのが一番結果的に近い結果になるのでは? 郵便番号では、特殊なケースでは、郵便番号が丁目番地順にならないケースがあると思うが、苦労するよりましでは。都心の大規模ビルの住所はアウトだが。 ーー エクセルで並べ替えは「並べ替え」操作でやるもんだ。 そのためには、「シートの列のデータに」、都道府県、市区町村、丁目番地、着付け(マンション名+質号数)などを「分けて!」、各列に作らないといけない。その後住所関連の複数列でソートする。 ーー このテーマのために、WEBや書籍などにたくさん記事がある。関数でやれるところまではやった記事がある。 質問も昔は頻出した。ー>記事として今も残っている。質問者はそれさえも探してないのだろう。府県+市ぐらいまでは(実用的には=狭い自分の住所録の上では、おかしなことにならない)分離できるかもしれない。重箱の隅的には、例外が起こるだろうが。 >住所の都道府県でデータを分割するには?:EnterpriseZine >Excel関数で住所を都道府県と市町村に分ける方法 などのWEB記事を、Googleで照会して、まず読んで、考えてみると良い すべてはそれから。質問の題目も絞れるだろう。 住所(府県、市区町村的に)が狭い範囲なら、フィルタを使い結果をコピーする、を繰り返す方法も有効であるかもしれない。
お礼
ありがとうございます。 何列か使い、2番目の数字(枝番)までは取り出して並べかえることができました。 それ以降は手で出来る範囲で並べ替えることにします。
- HohoPapa
- ベストアンサー率65% (455/693)
例えば、 A1セルの 東京都足立区123番地1 パークス足立101 から、 1231101000 をB1取り出し、 A2セルの 東京都練馬区1丁目2番1号 から 1210000000 をB2取り出し、 A3セルの 東京都江東区123番地 から 1230000000 をB3取り出し、 取り出した結果で並べ替えればいいですか? それにどのような意味があるのかよくわかりませんが 後半の関数をVBAに仕込み、 B1以下に =Getnum(A1) =Getnum(A2) =Getnum(A3) を埋め B列で並べ替えれば可能です。 '//-----以下、数字部分を取り出し、20文字固定長の数字羅列に変換 Function Getnum(Intext As String) As String Dim wkString As String Dim wkNum As String Dim wkLen As Integer Dim wkCounter As Integer Const Fixlen = 20 wkNum = "" wkString = StrConv(Intext, vbNarrow) wkLen = Len(wkString) For wkCounter = 1 To wkLen If IsNumeric(Mid(wkString, wkCounter, 1)) = True Then wkNum = wkNum & Mid(wkString, wkCounter, 1) End If Next wkCounter wkLen = Fixlen - Len(wkNum) For wkCounter = 1 To wkLen wkNum = wkNum & "0" Next wkCounter Getnum = wkNum End Function
お礼
ありがとうございます。 何列か使い、2番目の数字(枝番)までは取り出して並べかえることができました。 それ以降は手で出来る範囲で並べ替えることにします。
- kimamaoyaji
- ベストアンサー率26% (2801/10379)
数字に変換するのは簡単です、元々文字も数字で管理されています、ただ一文字が2バイトから4バイトの(1バイトは0~255の数字)で数字とされる、例えば数字1はアスキーコードでは49で、PCにはそのように記載されているのを人間に判るように表示変換して「1」と表示しているだけです、ですから全て数字表記にへんかんすれば数字にはなりますが、それを人間が判別するのは非常に困難でしょう。 関数で対応は少し無理があります(セル内の文字数制限内に複数の関数の式が収まらない可能性があります、それを回避するには複数のテーブルを使うという荒業になります)、マクロでプログラミングすれば不可能では無いですが、それより番地から先を隣のセルに切り取り、貼り付けした方が簡単ですよ。
お礼
ありがとうございます。 何列か使い、2番目の数字(枝番)までは取り出して並べかえることができました。 それ以降は手で出来る範囲で並べ替えることにします。
- hemohemo0825
- ベストアンサー率13% (79/593)
住所のセルを分割するしかないと思います。 関数では無理です。
お礼
ありがとうございます。 何列か使い、2番目の数字(枝番)までは取り出して並べかえることができました。 それ以降は手で出来る範囲で並べ替えることにします。
- msMike
- ベストアンサー率20% (364/1804)
》 関数を使ってうまくできないでしょうか できません、諦めましせう!
お礼
ありがとうございます。 何列か使い、2番目の数字(枝番)までは取り出して並べかえることができました。 それ以降は手で出来る範囲で並べ替えることにします。
お礼
ありがとうございます。 何列か使い、2番目の数字(枝番)までは取り出して並べかえることができました。 それ以降は手で出来る範囲で並べ替えることにします。