- 締切済み
VBA初心者です。
お世話になります。 VBAの初心者です。 以下のマクロを組もうと考えているのですが、いまいち理解できていないようで エラーが多発します。 どのようなコードを書けばいいのかアドバイスをお願い致します。 マクロを組みたい部分としては下記の3つです。 ・A列の氏名をSplit関数を使って半角スペースで分割⇒A列に名字、B列に名前 ・E列の郵便番号をSplit関数を使って-で分割⇒E列に上3桁、F列に下4桁 ・G列の住所を、G列⇒都道府県、H列⇒市区町村、I列⇒番地以下 またその際に下記の3点のようにしたいです。 -毎回入力されている行の数が違うため、自動で最終行を取るようにしたいです。 -郵便番号はF列は4桁の数字として入るように表示形式を設定 -I列はテキストとして表示形式を設定 本来であれば、一度自分で書いたものを掲載してアドバイス頂くべきなのでしょうが どのようにコードを書けばいいのかすら分からず困っています。 お手数ですが、よろしくお願い致します
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- web2525
- ベストアンサー率42% (1219/2850)
No1です 住所の分割:G4セルに住所が有るとして Sub Bunkatu() Adr = Range("G4").Value '住所から県の位置を確認 Ken = 3 - (Mid(Adr, 4, 1) = "県") '番地の先頭(最初に出てくる数字)位置を確認 For i = 1 To Len(Adr) Ban = Mid(Adr, i, 1) If IsNumeric(Ban) Then Exit For End If Next i '分割した住所を代入 With Range("G4") .Offset(0, 2).Value = Right(Adr, Len(Adr) - i + 1) .Offset(0, 1).Value = Mid(Adr, Ken + 1, i - Ken - 1) .Value = Left(Adr, Ken) End With End Sub わかりにくいかな
- kmetu
- ベストアンサー率41% (562/1346)
No2の補足です 住所の分割はVBAにこだわらなければ、関数を利用する以下の方法もあります。 allabout エクセル(Excel)の使い方/関数・数式 「住所データから都道府県名を取り出す方法」 http://allabout.co.jp/gm/gc/297822/ 住所データから市区町村郡名を取り出す方法 http://allabout.co.jp/gm/gc/297828/
- kmetu
- ベストアンサー率41% (562/1346)
とりあえず Sub Sample() Dim mName() As String, mZipcode() As String Dim i As Long 'A列の1行目からデータがある最後の行までループ For i = 1 To Range("A" & Rows.Count).End(xlUp).Row '名前の分割 mName = Split(Range("A" & i).Value) Range("A" & i).Value = mName(0) Range("B" & i).Value = mName(1) '郵便番号の分割 mZipcode = Split(Range("E" & i).Value, "-") Range("E" & i).Value = mZipcode(0) Range("F" & i).Value = mZipcode(1) Next End Sub 住所の分割はかなり面倒なので以下のサイトをご覧になって参考にしてください。 エクセルの学校 http://www.excel.studio-kazu.jp/kw/20070606022731.html
- web2525
- ベストアンサー率42% (1219/2850)
>自動で最終行を取るようにしたいです http://www.niji.or.jp/home/toru/notes/8.html MaxRow = Cells(Rows.Count, 1).End(xlUp).Row >・A列の氏名をSplit関数を使って半角スペースで分割⇒A列に名字、B列に名前 >・E列の郵便番号をSplit関数を使って-で分割⇒E列に上3桁、F列に下4桁 Split関数を使ってもいいですが、Excelには【区切り位置】と言う便利な機能があります http://www4.synapse.ne.jp/yone/excel2013/excel2013_kugiriiti2.html 例えばA2セルの内容を” ”(スペース)で区切る動作をマクロの記録で取り出すと Sub Macro1() Selection.TextToColumns Destination:=Range("A2"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _ Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _ :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True End Sub こんな感じになります 氏名と郵便番号に関してはこれで対応できます 問題は住所ですが 区切りになる部分が不定なので、結構ややこしいです 住所から都道府県を取り出す http://www.relief.jp/itnote/archives/000698.php 4文字目が”県”なら4文字まで取り出し、そうでない場合は3文字を取り出す ↑ これを応用 では、番地は? 住所の中で最初に出てくる数字以降を番地として取り出す事で対応できそうですね