いつもこちらの識者の皆様にはお世話になっております。
Excelのことで質問させてください。
A1-A3セルに下記のようなデータがあります。
東京都千代田区千代田1丁目1-1日本マンション 101
東京都千代田区千代田1丁目1-2
東京都千代田区千代田1丁目2
これをそれぞれ、B列に号地までの住所、C列に物件名と部屋番号に分けたいのですが、関数もしくはVBAで可能でしょうか?
定義としては、
1.物件名と部屋番号の間には必ず半角スペースがある。
(半角スペースを含まないセルはそのままB列にデータをコピーでOK)
2.番地と号地は半角数字、物件名は全角。
一戸建てのデータはifで半角スペースを含まないものをそのまま持ってくればいいんですが、集合住宅の場合、どのようにしたらできるのか分からず行き詰っています。
vbaでsplを使うことも考えましたが、うまくいきそうにありません。
どなたか、上記内容の場合どのような関数、もしくは構文が適しているか教えていただけませんでしょうか。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
A列に連続してデータが入っている場合です。
B・C列に書き出しますので、開けておいてからこのマクロを実行してみてください。
多分例外的なモンがあるでしょうから最終的には目視で確認ですね。
少しは役に立つかも?
※[半角数字][全角文字]と繋がっている部分を探してます。
Sub SS()
Dim oReg As Object, m As Object, mc As Object
Dim i As Long
Dim rgVal As String
Set oReg = CreateObject("vbscript.regExp")
With oReg
.Pattern = "[0-9][^ -~。-゜]"
.Global = True
End With
For i = 1 To Range("A1").End(xlDown).Row
rgVal = Range("A" & i)
If oReg.test(rgVal) Then
Set mc = oReg.Execute(rgVal)
For Each m In mc
Range("A" & i).Offset(0, 1) = Left(rgVal, InStr(rgVal, m.Value))
Range("A" & i).Offset(0, 2) = Mid(rgVal, InStr(rgVal, m.Value) + 1)
Next
Else
Range("A" & i).Offset(0, 1) = rgVal
End If
Next
Set oReg = Nothing
MsgBox "おしまい"
End Sub
No.4
- 回答日時:
こんばんは!
VBAになってしまいますが、一例です。
前提条件として
A列データは
質問文にあるように「物件名」の前は必ず数値だというコトで・・・
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub Sample1() 'この行から
Dim i As Long, k As Long, str As String
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If InStr(Cells(i, 1), " ") > 0 Then
k = WorksheetFunction.Find(" ", Cells(i, 1))
Do Until StrConv(str, vbNarrow) Like "[0-9]"
str = Mid(Cells(i, 1), k, 1)
k = k - 1
Loop
With Cells(i, 2)
.Value = Left(Cells(i, 1), k + 1)
.Offset(, 1) = Mid(Cells(i, 1), k + 2, Len(Cells(i, 1)))
End With
Else
Cells(i, 2) = Cells(i, 1)
End If
Next i
Columns.AutoFit
End Sub 'この行まで
※ 最初に書いた前提条件が合わない場合はご希望通りの表示になりません。m(_ _)m
ありがとうございます。
例題の3行では間違いなくできたんですが、いざ本当のデータでやってみるとうまくいきませんでした。
今回はNo.3の方をベストアンサーに選ばせていただきます。
No.2
- 回答日時:
試してません。
参考程度に。区切り位置機能。
http://kokodane.com/tec3_39.htm
文字列操作関係の関数を駆使する。
http://www.eurus.dti.ne.jp/yoneyama/Excel/waza/m …
例)
Left(A1,FIND(半角スペース,A1,0))
「A1の、半角スペースが入ってる位置を先頭から探して、その数字を返して、左端からその文字数分取得する」
未確認なので、多少間違えてるかもですが。
後は、「駆使」すれば、「真ん中だけ取得する」とか、「右側だけ取得する」とか可能です。
LENやMID、LEFTやRIGHTを入れ子入れ子入れ子にしてがんばりましょう。
VBAでやるなら、Split関数
http://officetanaka.net/excel/vba/tips/tips62.htm
でも、そこまでやる必要は無いと思う。
マクロは、最終手段。です。
No.1
- 回答日時:
ナンセンス!!
住所なんて、ナンデモありの世界、いくらガンバッテモ、...カモしれない程度の確率、だからマンション名の前に、コツコツと特殊な文字でも挿入した方が仕事は早い、、、
■05.02.28_Excel:住所を区切る
http://www.geocities.jp/chiquilin_site/data/0502 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】住所に郵便番号を付記する方法 3 2022/05/07 17:15
- Visual Basic(VBA) 指定列最終行までのスペースを改行するVBAについて 2 2022/06/01 19:50
- Excel(エクセル) EXCELでの複雑な複数条件について 4 2022/05/09 16:19
- その他(Microsoft Office) EXCELの1行を1枚の用紙にそれぞれ印刷したい。 3 2022/10/10 11:35
- 郵便・宅配 住所一覧にない住所があるのはなぜですか 2 2023/02/28 11:38
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テプラは半角数字が使えますか?
-
メールアドレスの上ハイフン入...
-
関数を使わずに一括で全角を半...
-
半角の『°(単位の度)』
-
半角の×(かける)は?
-
EXCELの文字列操作で文字数不足...
-
EXCELで、セル内の半角カ...
-
℃の半角表示
-
半角スペース
-
エクセル関数で文字列の中のス...
-
ワードへの差し込みで数字一桁...
-
EXCEL95 VLOOKUP関数で半角と全角
-
Excel 文字列の中から数字だけ...
-
半角の漢字の入力方法
-
契約書や 公文書・私文書などに...
-
ビジネスの文書における、数字...
-
1, (1),(1)の使い分け
-
半角英数で♭の入力
-
【VBA】ファイルパスに半角スペ...
-
隅付き括弧に半角はありますか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テプラは半角数字が使えますか?
-
半角の『°(単位の度)』
-
メールアドレスの上ハイフン入...
-
半角スペース
-
契約書や 公文書・私文書などに...
-
半角の×(かける)は?
-
EXCELの文字列操作で文字数不足...
-
関数を使わずに一括で全角を半...
-
EXCEL95 VLOOKUP関数で半角と全角
-
℃の半角表示
-
Excel2016 検索の窓を常時表示...
-
EXCELで、セル内の半角カ...
-
エクセル関数で文字列の中のス...
-
半角の漢字の入力方法
-
ビジネスの文書における、数字...
-
エクセルで、JIS関数、ASC関数...
-
【VBA】ファイルパスに半角スペ...
-
Excel 文字列の中から数字だけ...
-
エクセルでひらがな・漢字はそ...
-
お名前(姓)」には「カタカナ(...
おすすめ情報