
教えてください。
エクセルの住所リストで、
大阪府大阪府大阪市住之江・・・
東京都東京都新宿区・・・
などと、都道県名が連続で二重に入力されてしまっているデータがあります。
都道府県と市は分かれておらず、一つのセルの中に入っています。
都道府県名から番地まで、一つのセルの中に入っています。
すべてのデータではなく、問題ないデータもあれば、上記のよう連続で二重入力のデータもあります。
データは5000件、そのうち3~4割が問題だとおもわれます。
そこで、問題の連続二重入力を抽出して、一括で修正する方法を探しています。
良い方法があったら教えてください。
宜しくお願いいたします。
No.10ベストアンサー
- 回答日時:
自分なら手作業感満載の、47都道府県の一覧を作ってそれを基に置換するかな。
数式はSUBSTITUTE関数を主に使います。
A列に対象の住所が入力されていて、
B列に修正した住所を表示させるなら、
D1セルからD47セルまで、”北海道” から ”沖縄県” までの一覧を作り、
C1セルにその連続した6文字分を表示させます。
(=LEFT(C1&C1,6)……で神奈川県なら”神奈川県神奈")
B1セルに
=IFERROR(SUBSTITUTE(A1,VLOOKUP(LEFT(A1,6),$C$1:$D$47,2,FALSE)&VLOOKUP(LEFT(A1,6),$C$1:$D$47,2,FALSE),VLOOKUP(LEFT(A1,6),$C$1:$D$47,2,FALSE)),A1)
考え方は……
住所の先頭から6文字と、作成した表の6文字が一致したら、正しい都道府県を2つ並べた文字列を1つに置き換える。
一致しなかったり、置換に失敗したら元の住所を表示する。
……です。
あとはB列をコピーしてA列に「値の貼り付け」をしたのちに、B列からD列を削除。
力業です。
・・・
東京都八王子市や三重県津市など、重複していない場合はVLOOKUP関数で、
秋田県秋田市や和歌山県和歌山市など、県と市の名称が同じ場合はSUBSTITUTE関数で、
それぞれエラーになるのでA列の元の住所がそのまま表示されます。
ここも力業。
見た目は長ったらしいけど、VLOOKUP関数が重複しているだけで中身は難しいものではありません。
=IFERROR(
SUBSTITUTE(
A1
,VLOOKUP(LEFT(A1,6),$C$1:$D$47,2,FALSE)
&
VLOOKUP(LEFT(A1,6),$C$1:$D$47,2,FALSE)
,VLOOKUP(LEFT(A1,6),$C$1:$D$47,2,FALSE)
)
,A1
)
No.9
- 回答日時:
No.4、5です。
「都」「道」「府」「県」の文字を探して置換を行う方法が汎用性が高いと考え(例えばあとで「市」「町」などの重複が発見されたときも応用がきくという観点)で、2つの数式を投稿しました。
汎用性にとらわれなければNo.2さん、No.3さん、No.8さんの数式でも問題ないので、その考えに基づくと以下の数式でもよいと思います。
=REPLACE(A1,1,(LEFT(A1,3)=MID(A1,4,3))*3+(LEFT(A1,4)=MID(A1,5,4))*4,"")
No.8
- 回答日時:
都道府県名は3文字と4文字(神奈川・和歌山・鹿児島)があります。
=RIGHT(A1,LEN(A1)-IF(LEFT(A1,3)=MID(A1,4,3),3,IF(LEFT(A1,4)=MID(A1,5,4),4,0)))
ではどうでしょうか。先頭の3文字または4文字が繰り返しならばそれを除く(3か4か0)右側全部という作業です。
No.7
- 回答日時:
goomaniaさんの[No.5]のコメントを読んだ上での修正です。
=SUBSTITUTE(A1,LEFT(A1,3),"",1)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
=IF(LEFT(A1,3)=MID(A1,4,3),SUBSTITUTE(A1,LEFT(A1,3),"",1),A1)
No.5
- 回答日時:
No.4です。
前回回答の数式で殆どのケースでは問題ないと思うのですが、レアケースとは言え、困ったことになる可能性があることに気づきました。
添付画像①をご覧ください。仮に「大阪府立大学生協」の住所が添付画像①のA1のようなものだったとします。
すると前回回答の数式だと、「大阪府」は重複していないのですが、「大阪府立大学内」に「大阪府」があるため「2番目」の都道府県名と認識され、空白に置換されてしまいます。
このような事態さけるため、あくまでも「大阪府大阪府」のように「都道府県名が繰返していたら」という条件で置換することにすると数式は添付画像➁のようになります。
この場合の数式はB1セルに
=SUBSTITUTE(A1,REPT(LEFT(A1,AGGREGATE(15,6,FIND({"都","道","府","県"},A1),1)),2),LEFT(A1,AGGREGATE(15,6,FIND({"都","道","府","県"},A1),1)))
という数式を記述して、下方向にコピーしています。
つまり、「都道府県名が繰返していたら」「都道府県名を1つにする」という数式です。
こうすれば、前回回答の数式による冒頭に記したような問題は回避できます。

No.4
- 回答日時:
添付画像をご覧ください。
A列のA1セルから下方向に、ご質問者がお示しになった「都道府県名が重複しているものが含まれている住所データ」があるものとします。
作業列を確保して、上記データの変換を行うものとします。
ここではB列を作業列とし、B1セルに
=SUBSTITUTE(A1,LEFT(A1,AGGREGATE(15,6,FIND({"都","道","府","県"},A1),1)),"",2)
という数式を記述し、下方向へコピーしています。
こうすれば、A列の同じ行のセルのデータにが都道府県名の重複があれば削除されたものが表示され、重複がなければそのまま表示されます。
上記数式はFIND関数を用いてセルの中の「都」「道」「府」「県」の文字位置を探し、AGGREGATE関数でその文字位置を抽出、LEFT関数で先頭からその文字までの文字列を切り出して、都道府県名を特定しています。
その上で、SUBSTITUTE関数を用いて「2番目」の都道府県名を「空白」に置換しています。
つまり、「2番目」の都道府県名がない場合は置換が起こらず、そのまま表示されるというわけです。

No.3
- 回答日時:
こんにちは
考え方はNo2様と同様ですけれど、
A列に元の住所が並んでいると仮定して、B1セルに
=MID(A1,IFS(LEFT(A1,3)=MID(A1,4,3),4,LEFT(A1,4)=MID(A1,5,4),5,1,1),LEN(A1))
の関数式を入れて、右下のフィルハンドルをダブルクリック
(式がA列の最下行までフィルコピーされます)
必要なら、B列を選択して「コピー」-「値をペースト」で、B列の内容を固定値化します。
No.2
- 回答日時:
=IF(MID(A1,1,3)=MID(A1,4,3),MID(A1,4,100),IF(MID(A1,1,4)=MID(A1,5,4),MID(A1,5,100),A1))
とかではどうでしょうかね?
ひねりがなくて申し訳ないですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】住所に郵便番号を付記する方法 3 2022/05/07 17:15
- 地理学 東京都は「東京」、大阪府は「大阪」、静岡県は「静岡」。でも、北海道が「北海」でないのはなぜ? 5 2022/08/16 10:22
- その他(ニュース・時事問題) 「地域ブロック割」(県民割)の経費は誰が負担しているのでしょうか。 2 2022/05/30 23:05
- Excel(エクセル) エクセルのマクロを教えてください。 2 2022/03/28 13:14
- Excel(エクセル) Power Query でのデータの一括修正について 2 2022/05/10 02:00
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- 統計学 【47都道府県の人口統計データが出揃いました】全国で人口増加は東京都だけでした。 っ 1 2023/04/13 18:04
- 歴史学 京都に『古都』のイメージを抱く人が多いと思うんですけど……、 7 2022/12/23 13:27
- 転職 長く続けられる好条件の求人でしょうか? 3 2023/07/12 18:45
- その他(宿泊・観光) 北海道札幌市 神奈川県横浜市 愛知県名古屋市 大阪府大阪市 京都府京都市 兵庫県神戸市 福岡市福岡市 3 2023/01/29 18:14
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
【関数】同じ関数なのに、エラ...
-
エクセルの循環参照、?
-
エクセル
-
【マクロ】アクティブセルの時...
-
【マクロ】A列にある、日付(本...
-
iPhoneのExcelアプリで、別のシ...
-
【マクロ】3行に上から下に並...
-
【条件付き書式】シートの中で...
-
【マクロ】EXCELで読込したCSV...
-
【エクセル】期限アラートについて
-
【マクロ】列を折りたたみ非表...
-
【マクロ】WEBシステムから保存...
-
【マクロ】オートフィルターの...
-
Excel 複数のセルが一致すると...
-
エクセルに、105と入力すると、...
-
3〜400人分のデータをExcelで管...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報