住所が一つのセルに入っているものを
マンション名、もしくはなんとかハイツ系、なんとか荘系、
とはいってるものは別セルに表示したいのです。
例
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/04/01 09:10
- Excel(エクセル) 全角文字「ヴ」の半角文字「ヴ」への変換方法について 3 2022/11/05 12:07
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
忘れられない激○○料理
これまでに食べたもののなかで、もっとも「激○○」だった料理を教えて下さい。 激辛、でも激甘でも。 激ウマ、でも激マズでも。
-
いけず言葉しりとり
はんなりと心にダメージを与える「いけず言葉」でしりとりをしましょう。 「あ」あら〜しゃれた服着てはりますな 遠くからでもわかりましたわ
-
【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
【お題】 ・このサンタクロースは偽物だと気付いた理由とは?
-
【Excel】 住所録の建物名を分ける方法
Excel(エクセル)
-
エクセルで住所と建物名を分けるには?
Excel(エクセル)
-
エクセルにおいて、住所データからマンション名のみを取り出したいです。
Excel(エクセル)
-
-
4
住所録を市区町村、番地、建物名の3分割にする方法
Excel(エクセル)
-
5
エクセル関数で住所から丁目番地、建物名を抽出したい
Excel(エクセル)
-
6
Excelで住所を2つ(町名迄と番地以降)に分けるには?
Excel(エクセル)
-
7
【Excel】 住所の県、建物でセルを分けたい。
Excel(エクセル)
-
8
文字列間にスペースを入れる関数はある?
Excel(エクセル)
-
9
ExcelやAccessで住所と番地を分けたい
その他(悩み相談・人生相談)
-
10
【Excel】住所を分ける方法
Excel(エクセル)
-
11
エクセルで住所の混在する「丁目番号番地」を「-」に一括変換する方法ってありますか?
Excel(エクセル)
-
12
エクセルで指定したセルのどれかに○がはいっていたら○を表示したいです。
その他(コンピューター・テクノロジー)
-
13
エクセルの関数で1つのセルに入っている住所を丁目までと番地以降に分けたい
Excel(エクセル)
-
14
エクセル・○○(日付)より前の場合は偽、後の場合は真の関数
Access(アクセス)
-
15
ACCESS 住所の分割について
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
住民票にマンション名が入って...
-
マンションの下の階より上の階...
-
住所録からマンション名以下を...
-
集合メールボックスが壊されま...
-
母子家庭で1階は危ない?
-
津波に強いハウスメーカーを教...
-
コーシャハイム南葛西五丁目に...
-
セキスイハイムの図面について...
-
404号室は縁起が悪い?
-
トミンハイムとコーシャハイム
-
家賃と一緒に自治会費が引き落...
-
鉄骨系住宅の夏と冬の快適さ
-
「号室」って書きますか?
-
マンション、10年でこんなに...
-
洗濯機置き場が、ダイニングキ...
-
セキスイハイムについて
-
引越し2ヶ月経過後の挨拶
-
フランス料理店のグランメゾン...
-
助けてください!外人の彼氏の...
-
「大字名」とは・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
住民票にマンション名が入って...
-
マンションの下の階より上の階...
-
404号室は縁起が悪い?
-
王子駅から車で送迎する場合
-
「号室」って書きますか?
-
家賃と一緒に自治会費が引き落...
-
セキスイハイムで建てた方、ム...
-
国民健康保険証の住所記載につ...
-
住所録からマンション名以下を...
-
トミンハイムとコーシャハイム
-
これもメゾネットですか?
-
集合メールボックスが壊されま...
-
コーシャハイム南葛西五丁目に...
-
一軒家に住んでいる人って大変...
-
海外生活経験がある方に質問で...
-
2階の住人の引き戸の開け閉めが...
-
引越し2ヶ月経過後の挨拶
-
家購入すると
-
築35年の中古マンション購入...
-
母子家庭で1階は危ない?
おすすめ情報