[[20220226145505]] 『住所の郵便番号だけを抽出する』(ブタ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『住所の郵便番号だけを抽出する』(ブタ)

住所が記載されているセルで、郵便番号だけを反映させたいです。
以下の3つが混在しています。

123-4567あああ県いいい市ううう町
1234567あああ県いいい市ううう町
あああ県いいい市ううう町

郵便番号が入力されていないセルはそのままで仕方のないのですが、1つ目や2つ目の場合に、1234567(ハイフンなし)で反映させたいです。

A1に住所の入力されており、B1にその結果(郵便番号だけ)をマクロで反映させるには、どのようにしたらよいでしょうか。

よろしくお願いします。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


B1にその結果(郵便番号だけ)をマクロで反映させる とありますが、ワークシート関数でもできます。
IF関数、FIND関数、LEFT関数、MID関数

マクロでやりたいなら
Instr関数、Left関数、Mid関数を使えばできます。

どのようにしたらよいでしょうか。 "-"(ハイフンという文字列)を見つけて、あったら○○する、なかったら△△する
という様に考えます。
(ヘンリー) 2022/02/26(土) 15:20

すみません。改行が変になってしまい、
読みづらくなってしまったので、
再度お送りいたします。

>B1にその結果(郵便番号だけ)をマクロで反映させる
とありますが、ワークシート関数でもできます。
IF関数、FIND関数、LEFT関数、MID関数

マクロでやりたいなら
Instr関数、Left関数、Mid関数を使えばできます。

>どのようにしたらよいでしょうか。
"-"(ハイフンという文字列)を見つけて、
あったら○○する、なかったら△△する
という様に考えます。
(ヘンリー) 2022/02/26(土) 15:22


 こんなマクロを書いてみました。

   <実行前>         →    <実行後>
 行 ______________A______________      行 ______________A______________ ________B________ ______C______ _____D_____
  1 1234567〇〇県××市                 1 1234567〇〇県××市                     1234567 〇〇県××市             
  2 123-4567〇〇県××市                2 123-4567〇〇県××市          123-4567          〇〇県××市             
  3 123−4567〇〇県××市        3 123−4567〇〇県××市  123−4567  〇〇県××市             
  4 〇〇県××市                        4 〇〇県××市                                    〇〇県××市             
  5 〇〇市1295番                    5 〇〇市1295番                                〇〇市        1295番 
  6 〇〇市1ー5−4                    6 〇〇市1ー5−4                                〇〇市        1ー5−4 
  7 〇〇市1丁目10                    7 〇〇市1丁目10                                〇〇市        1丁目10 
  8 〇〇町1295番                        8 〇〇町1295番                                    〇〇町        1295番     
  9 〇〇〇1295番                    9 〇〇〇1295番                                〇〇〇        1295番 

 Sub test()
     Dim vIn, vOut, s, sTail, sDummy
     Dim f As Long, i As Long, Edge As Long, idx As Long
     Dim sWides, sNarrows

     sWides = Split("0,1,2,3,4,5,6,7,8,9", ",")
     sNarrows = Split("0,1,2,3,4,5,6,7,8,9", ",")

     vIn = Range("A1").CurrentRegion.Columns(1).Value
     ReDim vOut(1 To UBound(vIn), 1 To 3)

     For idx = 1 To UBound(vIn)
         s = vIn(idx, 1)

         If IsNumeric(Left(s, 1)) Then '郵便番号有り
             f = IIf(IsNumeric(Mid(s, 8, 1)), 1, 0)
             vOut(idx, 1) = Left(s, 7 + f)
             sTail = Right(s, Len(s) - 7 - f)
         Else
             sTail = s
         End If

         sDummy = sTail

         For i = 0 To 9
             sDummy = Replace(sDummy, sWides(i), i)
         Next i

         With Application
             Edge = .Min(.Find(sNarrows, sDummy & "0123456789"))
         End With

         vOut(idx, 2) = Left(sTail, Edge - 1)
         vOut(idx, 3) = Mid(sTail, Edge, Len(sTail))
     Next idx

     Range("B1").Resize(UBound(vOut), UBound(vOut, 2)) = vOut
 End Sub

(半平太) 2022/02/26(土) 16:40


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.