[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『分割方法』(のん)
ひとつの枠に入っているものを2列に分ける方法を
教えてください。
具体的に申しますと、ひとつの枠に郵便番号が記載
されており、それを3桁と4桁に分けたいと思っております。
A列 001
B列 0001
となるように。
初歩的な質問ですいませんが、よろしくお願い致します。
いつもお世話になります。 ご質問の内容ですが、 LEFT関数とRIGHT関数でできますね A1 1600022 B1 =LEFT(A1,3) C1 =RIGHT(A1,4) ・・・以下B1:C1をオートフィル。 値のみにしたい時はB:Cをコピーして値の貼り付け。 ↑どきどきっ合ってるかなぁ・・・。 私も初心者でこの場で回答をする立場ではないのですが たまたま拝見しましたので。 ご教授の皆様がもっと画期的な回答を下さるかも・・・^_^; (ばんばん)
ありがとうございました。
A1 1600022
B1 =MID(A1,1,3)
C1 =MID(A1,4,4)
B1、C1 オートフィル でいかが?
(ぷーのすけ)
こちらに統合しました。(kazu)
再度書き込みをしました。
住所を分割する場合はどのようにすればよいのでしょうか。
たとえば、
北海道札幌市西区2条4丁目
上記住所を
1列目 都道府県
2列目 市町村
3列目 それ以下住所
という感じにしたいと思ってます。
どうぞ宜しくお願い致します。
下記過去ログが参考になります。 (純丸)(o^-')b [[20041008223005]] 『郵便番号から、住所を複数セルへ振り分ける方法』(コミキ) [[20040831081709]] 『住所セルの分割』(ピヨ)
分割方法、 やはり他にも方法がありましたね^_^; ぷーのすけさんのほうが分かり易く、スマートですね。 ばんばんもお勉強させていただきました_(_^_)_ (ばんばん)
う〜ん、スペシャル関数を披露する時が訪れたか・・・(笑 せやけど、ユーザー関数の限界かそれともエクセル君の限界なんかは不明ですけど、 Excel2000上では196行目から#VALUE!が出ますワ。 勿論そのエラーを補填するマクロは用意しとりますけど、yata関数の延長戦上では エラーを拾ってっちゅう作業は不可でしたんで、macroというマクロを実行してもら わなあかんことになります。 なぜそうなるかを識者にお伺いしたいんですけど、どうでっしゃろ? 2000以降やと有効なもんかどうかも含めて・・・
使い方はデータを拾い出したいせるに=yata(a1:a1000)みたいに入力して貰うて、続いてmacroを実行しとってくらはい。 (弥太郎)
標準モジュールに '----------------------------------- Public err_hnd As Boolean Public adrs_data Public st_adrs As String Public end_adrs As Long Public flag As Boolean Public adrs1 Public sp_data Public tbl As Range Public adrs As String Option Base 1 '----------------------------------------- Function yata(data) Dim get_sty() Dim n As Integer, i As Integer, mid_cnt As Integer Dim get_data As String Dim city As Integer, gun As Integer
Application.EnableEvents = True Set tbl = Range(data.Address(0, 0)) If tbl.Rows.Count > 1 Then adrs = data.Address(0, 0) adrs_data = Split(data.Address(0, 0), ":") adrs1 = adrs_data(0) st_adrs = ActiveCell.Address(0, 0) end_adrs = tbl.Rows.Count data = Range(adrs1) flag = True ActiveCell.Formula = "=yata (" & adrs1 & ")" End If sp_data = "" If data = "" Then yata = "": Exit Function
Select Case Left(data, 3) Case "大阪府", "京都府", "東京都", "北海道" sp_data = Left(data, 3) & "," mid_cnt = 3 Case Else For i = 3 To 4 If Mid(data, i, 1) = "県" Then sp_data = Left(data, i) & "," mid_cnt = i Exit For End If Next i End Select
get_data = Mid(data, mid_cnt + 1, 77) n = InStr(get_data, "市") city = InStr(n + 1, get_data, "市") gun = InStr(get_data, "郡") If n <> 0 Then If city <> 0 And city < 6 Then Select Case Left(get_data, city) Case "八日市場市", "市川市", "市原市", "今市市", "四日市市", _ "八日市市", "廿日市市" sp_data = sp_data & Left(get_data, city) & "," mid_cnt = mid_cnt + city Case Else If Left(get_data, 3) <> "余市郡" Then sp_data = sp_data & Mid(get_data, 1, n) & "," mid_cnt = mid_cnt + n End If End Select ElseIf gun <> 0 And n > gun Then If get_data Like "郡上市*" Or get_data Like "小郡市*" Or get_data Like _ "郡山市*" Or get_data Like "蒲郡市*" Or get_data Like "大和郡山市*" Then sp_data = sp_data & Mid(get_data, 1, n) & "," mid_cnt = mid_cnt + n End If ElseIf gun <> 0 And n < gun Then If Mid(get_data, 1, gun) <> "高市郡" Then sp_data = sp_data & Mid(get_data, 1, n) & "," mid_cnt = mid_cnt + n End If Else If n <> 1 Then sp_data = sp_data & Mid(get_data, 1, n) & "," mid_cnt = mid_cnt + n End If
End If End If
get_data = Mid(data, mid_cnt + 1, 77) n = InStr(get_data, "区") If n > 1 And n < 5 Then sp_data = sp_data & Mid(get_data, 1, n) & "," mid_cnt = mid_cnt + n End If
get_data = Mid(data, mid_cnt + 1, 69) If Not sp_data Like "*市*" And Not sp_data Like "*区*" Then n = InStr(get_data, "郡") If n > 1 Then sp_data = sp_data & Mid(get_data, 1, n) & "," mid_cnt = mid_cnt + n End If End If get_data = Mid(data, mid_cnt + 1, 77) n = InStr(get_data, "町") If n > 1 Then sp_data = sp_data & Mid(get_data, 1, n) & "," mid_cnt = mid_cnt + n ElseIf InStrRev(get_data, "町") > n Then sp_data = sp_data & Mid(get_data, 1, InStrRev(get_data, "町")) & "," mid_cnt = mid_cnt + InStrRev(get_data, "町")
End If get_data = Mid(data, mid_cnt + 1, 77) sp_data = sp_data & Mid(get_data, 1, 77) & "," yata = Split(sp_data, ",")(0) sp_data = Right(sp_data, Len(sp_data) - Len(yata) - 1)
End Function '------------------------------- Sub macro()
For Each c In Range(st_adrs).Resize(end_adrs) If IsError(c) Then Range(c.Address).Select
err_adrs = Split(ActiveCell.Formula, "(")(1)
err_adrs = Left(err_adrs, Len(err_adrs) - 1) Range(c.Address) = "=yata(" & err_adrs & ":" & adrs_data(1) & ")" End If Next c End Sub '--------------------------------- 'シートモジュールに Private Sub Worksheet_Change(ByVal Target As Range) Dim msg As Range Dim i As Integer, t As Integer, m As Integer, f As Integer, n As Integer Dim rng As String, trgt_data As String Dim data_a Static j As Integer
If Target.Count > 1 Then Exit Sub On Error GoTo trbl data_a = Target.Formula If data_a Like "*:*" Then j = 0 Range(Target.Address(0, 0)).Formula = "=yata(" & adrs1 & ")" Exit Sub End If Set msg = Intersect(Target, tbl) If msg Is Nothing And Left(data_a, 6) <> "=yata(" Then Exit Sub trgt_data = sp_data If Not msg Is Nothing Then For Each c In ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas) If Range(c.Address).Formula = "=yata(" & Target.Address(0, 0) & ")" Then 'Range(c.Address).Select Range(c.Address).Formula = Range(c.Address).Formula If Target = "" Then Range(c.Address).Offset(, 1).Resize(, 5).ClearContents Exit Sub End If Next c End If
If Left(data_a, 6) = "=yata(" Then Application.EnableEvents = False Target.Offset(, 1).Resize(, 5).ClearContents t = InStr(data_a, "(") m = InStr(data_a, ")") rng = Mid(data_a, t + 1, m - t - 1) msoft = Split(trgt_data, ",", -1) For i = 0 To UBound(msoft) - 1 f = Application.WorksheetFunction.Find(msoft(i), Range(rng), 1) n = Len(msoft(i)) If msoft(i) <> "" Then Target.Offset(, i + 1).Formula = "=mid(" & rng & "," & f & "," & n & ")" End If Next i End If If flag Then For j = j + 1 To end_adrs - 1 Range(st_adrs).Offset(j).Formula = "=yata(" & Range(adrs).Cells(j + 1, 1).Address(0, 0) & ")" Next j
End If flag = False trbl: Application.EnableEvents = True
End Sub
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.