住所が一つのセルに入っているものを
マンション名、もしくはなんとかハイツ系、なんとか荘系、
とはいってるものは別セルに表示したいのです。
例
A1 東京都○○区淡路町2-1-11光マンション222
A2 大阪府○○区外井場3-1-1
A3 広島県○○区草薙場5-3-1 水蔵荘20号
この場合
B1「東京都○○区淡路町2-1-11」別セルC1にて「光マンション222」
B2 「大阪府○○区外井場3-1-1」でOK
B3 「広島県○○区草薙場5-3-1」別セルC3にて「水蔵荘20号」
となるようにするためにはどしたらいいんでしょうか?
住所の全角数字はすべて半角数字には置換しました。
可能かなと思える検索条件は
マンション前には半角の"1,2,3,4,5,6,7,8,9,0,半角スペース"
があり、その後は全角の文字でマンション名がある
という事なんです。
つまり、最後の半角の後に全角の文字があるものはという事なんで
大丈夫だなと思っていたつもりだったのですが
よく考えたら、マンションの最後の部屋番号も半角文字だ。。。。
さらに問題はマンション名が半角カタカナのものもある。
※ただ、これについては最悪、置換で全角に変えようかなとも思います。
(その前に半角カナを全角カナに変える関数ってあるんですか?)
さて、これらの条件でマンション名以降だけを別セルにすることできるのでしょうか?
もしわからなければ、ウン万行のデータを手作業で・・・行わないといけないのです・・・・・。
ぜひ、よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
#01です。
少しだけマクロを変えました。「半角数字と全角カナ」「半角数字と空白」も区切りと考えるようにしています
>そこでとまってしまってます。
これを前回説明した場所に貼り付けたら、VBE画面は閉じてしまってかまいません。ワークシート画面に戻って適当なセルに、たとえば
=GetSep(A1)
のように式を入れてみてください。ブックを保存すればマクロも一緒に保存されますので、保存を意識する必要はありません。
私は
B1の式は =LEFT(A1,getsep(A1))
C1の式は =TRIM(RIGHT(A1,LEN(A1)-getsep(A1)))
にしています。
Function GetSep(ByVal trg As Range) As Integer
Dim RE, mchItems
Dim strPattern As String
Dim idx As Integer
If trg <> "" Then
Set RE = CreateObject("VBScript.RegExp")
strPattern = "-[0-9]+|[0-9][ァ-ン]|[0-9] |[0-9] "
With RE
.Pattern = strPattern
.IgnoreCase = True
.Global = True
Set mchItems = .Execute(trg.Value)
If mchItems.Count > 0 Then
GetSep = mchItems.Item(mchItems.Count - 1).FirstIndex _
+ mchItems.Item(mchItems.Count - 1).Length
Else
GetSep = Len(trg.Value)
End If
End With
Set RE = Nothing
End If
End Function
結果はこうなりました。到底「完全なレベル」にはなりません。
ただ住所の末尾 1-12-5 とマンション名の間に空白を入れると分離できますので、うまくいかないデータはそのように修正してください
B列 C列
○○府○○市○○丘1-12-5 セ○○○○泉丘101号
○○県○○市○○野区東○○台1-3-3 佐藤ハイツ2N
○○都○○区大○○町3-22-21 ○○○○園403
○○都○○区○○谷3-42-14 ス○○山101
○○県○○市○○町1234-1 ○○○○エストe502
○○県○○市○○区○○町1-20 コーポ○○102
○○県○○市○○西2-3-2 グリーン○○西101
○○県○○市○○郷4321-4 サニー○○204
○○県○○市○○区○○町5472 ○○備前303
○○県○○市○○町方五23-4 スミエ-ルミクラシ05号
○○府○○市○○区○○町鷲見99パ ルテオン東山南209 → NG(なんでかなぁ)
○○府○○府○○市○○○○台3丁目4番129-101 号 → NG(ルール通り)
○○県○○県○○市○○○○12-2135
○○府○○市○○町5-12 坂本ハイツ3-B
○○県○○市○○町821エステートブリッツンC-101 → NG(ルール通り)
なお#02式はすごいですね。ちょっと考えましたが動く理由がまだ理解できません。いつもながらmaron--5さんの作る関数式には感心します。
No.3
- 回答日時:
この手のものに汎用性を期待するのは 時間の無駄だと思います。
ある程度は 目で確認してエラーチェックした方がいいと思います。
条件を増やし過ぎると 処理が重くて使い物にならなくなりますよ?
■B1セル:作業列(番号以下)
=REPLACE(A1,1,MIN(FIND({1,2,3,4,5,6,7,8,9,0,
"1","2","3","4","5","6","7","8","9","0"},
A1&"12354678901234567890"))-1,"")
■C1セル:住所
=TRIM(SUBSTITUTE(A1,D1,""))
■D2セル:ビル・マンション名
=TRIM(REPLACE(B1,1,MIN(INDEX((ISERR(-MID(B1&".",COLUMN(1:1),1))
+ISNUMBER(-MID(B1,COLUMN(1:1)+1,1))+ISNUMBER(FIND(MID(B1,COLUMN(1:1)+1,1),
"--丁番号"))+(MID(B1,COLUMN(1:1)+2,1)="."))*256+COLUMN(1:1),0)),""))
お勧めする訳ではありません。興味本位の実験みたいなもんです。
No.2
- 回答日時:
◆関数で
B1=LEFT(A1,LOOKUP(1,0/FIND("-",A1,COLUMN(1:1)),COLUMN(1:1))+SUMPRODUCT(--ISNUMBER(0/MID(A1,LOOKUP(1,0/FIND("-",A1,COLUMN(1:1)),COLUMN(1:1)),{1,2,3,4}))))
★下にコピー
C1=TRIM(REPLACE(A1,1,LEN(B1),))
★下にコピー
この回答への補足
すごいです!
式の内容はわかりませんが、結構な確率でできてます。
○○府○○市○○丘1-12-5セ○○○○泉丘101号 OK
○○県○○市○○野区東○○台1-3-3佐藤ハイツ2N OK
○○都○○区大○○町3-22-21 ○○○○園403 OK
○○都○○区○○谷3-42-14ス○○山101 OK
○○県○○市○○町1234-1 ○○○○エストe502 OK
○○県○○市○○区○○町1-20 コーポ○○102 OK
○○県○○市○○西2-3-2グリーン○○西101 OK
○○県○○市○○郷4321-4 サニー○○204 OK
で、下記の条件についてはダメでした・・・
○○県○○市○○区○○町5472 ○○備前303 B,Cともにエラー
○○県○○市○○町方五23-4スミエ-ルミクラシ05号 Cにルミクラシ05号(これは単純に半角にしたほうがいいですね)
○○府○○市○○区○○町鷲見99パルテオン東山南209 B,Cともにエラー
○○府○○府○○市○○○○台3丁目4番129-101号 Cに[号]が残る
○○県○○県○○市○○○○12-2135 Cに[5]が残る
○○府○○市○○町5-12坂本ハイツ3-B Cに[B]が残る
○○県○○市○○町821エステートブリッツンC-101 わけられない
これらについて、簡単であればおしえていただけないでしょうか?
No.1
- 回答日時:
>よく考えたら、マンションの最後の部屋番号も半角文字だ。
。。。deepimpactさんもお気づきですね。これだけではまだ「条件が不十分」です。
ですから最後に出現する「-(半角ハイフン)につづく半角数字」を区切り文字として扱うようにしてみます。「完全に」とまで言えなくてもかなり救えるはずです。
まず以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。
Function GetSep(ByVal trg As Range) As Integer
Dim RE, mchItems
Dim strPattern As String
Dim idx As Integer
If trg <> "" Then
Set RE = CreateObject("VBScript.RegExp")
strPattern = "-[0-9]+"
With RE
.Pattern = strPattern
.IgnoreCase = True
.Global = True
Set mchItems = .Execute(trg.Value)
If mchItems.Count > 0 Then
GetSep = mchItems.Item(mchItems.Count - 1).FirstIndex _
+ mchItems.Item(mchItems.Count - 1).Length
End If
End With
Set RE = Nothing
End If
End Function
これは最後の「-(半角ハイフン)につづく半角数字」の終わりが先頭から何文字目かを返すユーザ定義関数です。ワークシートに戻り
=GetSep(A1)
と式を入力すると「15」が返ります。
あとはこのユーザ定義関数を用いて、B1セルは
=LEFT(A1,GetSep(A1))
C1セルは
=TRIM(MID(A1,GetSep(A1)+1,LEN(A1)))
を入力し下方向にコピーします
すると結果は以下のようになります。
B列 C列
東京都○○区淡路町2-1-11 光マンション222
大阪府○○区外井場3-1-1
広島県○○区草薙場5-3-1 水蔵荘20号
これで多少楽になりませんか?
この回答への補足
ありがとうございます。
でも
すいません。
VBAわかんなくて説明していただいてる
貼り付けまでやったのですが
それをどう保存?すればいいのかわからないのです。
そこでとまってしまってます。
よろしければ教えていただけないでしょうか?
また、上の方の欄にも答えてますが
色々な形のリストがあるので
参考になればと参考にされてくださいませんか?
どうぞよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
架空の映画のネタバレレビュー
映画のCMを見ていると、やたら感動している人が興奮で感想を話していますよね。 思わずストーリーが気になってしまう架空の感動レビューを教えて下さい!
-
【Excel】 住所録の建物名を分ける方法
Excel(エクセル)
-
エクセルにおいて、住所データからマンション名のみを取り出したいです。
Excel(エクセル)
-
エクセルで住所と建物名を分けるには?
Excel(エクセル)
-
-
4
住所録を市区町村、番地、建物名の3分割にする方法
Excel(エクセル)
-
5
エクセル関数で住所から丁目番地、建物名を抽出したい
Excel(エクセル)
-
6
Excelで住所を2つ(町名迄と番地以降)に分けるには?
Excel(エクセル)
-
7
【Excel】 住所の県、建物でセルを分けたい。
Excel(エクセル)
-
8
ExcelやAccessで住所と番地を分けたい
その他(悩み相談・人生相談)
-
9
文字列間にスペースを入れる関数はある?
Excel(エクセル)
-
10
【Excel】住所を分ける方法
Excel(エクセル)
-
11
エクセルで住所の混在する「丁目番号番地」を「-」に一括変換する方法ってありますか?
Excel(エクセル)
-
12
エクセルで住所を県と市・郡と町以降の住所に分割したい
Excel(エクセル)
-
13
エクセルで指定したセルのどれかに○がはいっていたら○を表示したいです。
その他(コンピューター・テクノロジー)
-
14
エクセルの関数で1つのセルに入っている住所を丁目までと番地以降に分けたい
Excel(エクセル)
-
15
エクセル・○○(日付)より前の場合は偽、後の場合は真の関数
Access(アクセス)
-
16
ACCESS 住所の分割について
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
住民票にマンション名が入って...
-
マンションの下の階より上の階...
-
「号室」って書きますか?
-
新築セキスイハイム→内装等は持...
-
404号室は縁起が悪い?
-
王子駅から車で送迎する場合
-
積水ハイムの展示住宅譲渡
-
マッサージ機の振動音
-
コストパフォーマンスとバリュ...
-
海外生活経験がある方に質問で...
-
ハイツに住んでいます。(3階建...
-
国民健康保険証の住所記載につ...
-
集合メールボックスが壊されま...
-
積水ハウス新築軽量鉄骨のハイ...
-
家賃と一緒に自治会費が引き落...
-
1日だけ部屋を借りたい!
-
セキスイハイムで建てた方、ム...
-
セキスイの家を他社で増築した方
-
これもメゾネットですか?
-
アパートの電話線設置工事について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
住民票にマンション名が入って...
-
マンションの下の階より上の階...
-
404号室は縁起が悪い?
-
王子駅から車で送迎する場合
-
「号室」って書きますか?
-
家賃と一緒に自治会費が引き落...
-
セキスイハイムで建てた方、ム...
-
国民健康保険証の住所記載につ...
-
住所録からマンション名以下を...
-
トミンハイムとコーシャハイム
-
これもメゾネットですか?
-
集合メールボックスが壊されま...
-
コーシャハイム南葛西五丁目に...
-
一軒家に住んでいる人って大変...
-
海外生活経験がある方に質問で...
-
2階の住人の引き戸の開け閉めが...
-
引越し2ヶ月経過後の挨拶
-
家購入すると
-
築35年の中古マンション購入...
-
母子家庭で1階は危ない?
おすすめ情報