『住所の郵便番号だけを抽出する』(ブタ) 住所が記載されているセルで、郵便番号だけを反映させたいです。 以下の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