• ベストアンサー

excelの置き換え

excel2010を使用しています。 住所に含まれる番地の最初の数字だけを残し、ハイフン以外の数字をアスタリスクに変換。 さらに、番地の後に記載されているビル名を削除するという置き換えを一括で行いたいです。 何か方法はありませんでしょうか。 番地の数字やハイフンは全角の場合と半角の場合があり、 できればこれらも半角に統一したいです。 【置換前】 東京都台東区0-0-0 AAAビル 東京都豊島区1-1-1 神奈川県横浜市2-1-5 BBBビル 【置換後】 東京都台東区0-*-* 東京都豊島区1-*-* 神奈川県横浜市2-*-*

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! VBAになってしまいますが、一例です。 データはA列の1行目からあるとします。 B列に表示するようにしてみました。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, k As Long, cnt As Long, str As String For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row Cells(i, 2) = StrConv(Cells(i, 1), vbNarrow) cnt = 0 For k = 1 To Len(Cells(i, 2)) str = Mid(Cells(i, 2), k, 1) If str = "-" Then cnt = cnt + 1 ElseIf str Like "[0-9]" And cnt > 0 Then Cells(i, 2) = WorksheetFunction.Replace(Cells(i, 2), k, 1, "*") End If Next k For k = Len(Cells(i, 2)) To 1 Step -1 str = Mid(Cells(i, 2), k, 1) If str = "*" Then cnt = k Exit For End If Next k Cells(i, 2) = Left(Cells(i, 2), cnt + 1) Next i End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m

25taku
質問者

お礼

できました!すばらしいです! 質問する時は正直解決すると思っていなかったので、驚いております。 ありがとうございました!

その他の回答 (4)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.4です! たびたびごめんなさい。 前回のコードで最後から3行目 >Cells(i, 2) = Left(Cells(i, 2), cnt + 1) の行を >Cells(i, 2) = Left(Cells(i, 2), cnt) に訂正してください。 前回のコードですと、1文字余計なものが含まれてしまいます。 何度も失礼しました。m(_ _)m

  • kikitaiOK
  • ベストアンサー率55% (10/18)
回答No.3

おかしいですね・・・ 私の環境では正常に動作しています。 よろしければ"-*-*-*"になったところの関数をコピペしていただけないでしょうか?

25taku
質問者

お礼

もしかしたら私の記述ミスか、環境の問題なのかもしれません。 とりあえず他の方の回答で解決してしまったため、 質問を打ち切らせていただきます。 ありがとうございました。

25taku
質問者

補足

再度試してみたところ、1-1-1の場合はうまくいきました。 ですが、番地の値を変更すると下記のような結果になってしまいます。 B1に入力 =LEFT(A1,FIND({"1","2","3","4","5","6","7","8","9","0"}, JIS(A1)&"1234567890")) & "-*-*" A1 東京都台東区2-2-2 AAAビル 結果⇒東京都台東区2-2-2 AAAビル-*-* B3に入力 =LEFT(A3,FIND({"1","2","3","4","5","6","7","8","9","0"}, JIS(A3)&"1234567890")) & "-*-*" A3 東京都台東区3-3-1 AAAビル 結果⇒東京都台東区3-3-1-*-*

  • kikitaiOK
  • ベストアンサー率55% (10/18)
回答No.2

=LEFT(A1,FIND({"1","2","3","4","5","6","7","8","9","0"}, JIS(A1)&"1234567890")) & "-*-*" 関数中のA1がセルの位置ですので住所のセル位置に変更してください。

25taku
質問者

お礼

ありがとうございます。 あと一歩なのですが、~ビルの部分が「-*」に変換されてしまいます。 ビルは削除したいです。 東京都台東区1-1-1 AAAビル ⇒東京都台東区1-*-*-* こうしたい ⇒東京都台東区1-*-*

回答No.1

セルA1に住所が入力されているとして・・・ Excel2007以上の場合 隣のセルに =IF(A1="","",IFERROR(LEFT(A1,FIND("区",A1)+2)&"*-*",LEFT(A1,FIND("市",A1)+2)&"*-*")) の式を入れて下へコピー Excel2003以下の場合 =IF(A1="","",IF(ISERROR(LEFT(A1,FIND("区",A1)+2)&"*-*"),LEFT(A1,FIND("市",A1)+2)&"*-*",LEFT(A1,FIND("区",A1)+2)&"*-*")) の式を入れて下へコピー 取り敢えず"市"と"区"の場合だけを想定してます。

25taku
質問者

お礼

変換できました。素晴らしいです。 説明不足で申し訳ないのですが、 実際のデータは番地の前に町名が入ることが多いので、区や市で終わることはほとんどありません。 その場合の変換は難しいでしょうか?

関連するQ&A

  • Excel2010 住所5分割

    東京都豊島区東池袋3丁目1番1号 東京都八王子市子安町4丁目10番15号 神奈川県川崎市高津区明津12番地メゾン美鈴 とある住所を「都道府県」「市区町村郡」「通称名」「○丁目」「番地ビル」 のように分割したいです。  M列     N列      O列     P列      Q列    都道府県  市区町村郡    通称名    丁目      番地 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 「東京都」 「豊島区」   「東池袋」  「3丁目」  「1番1号」 「東京都」 「八王子市子安町」      「4丁目」  「10番15号」 「神奈川県」 「川崎市高津区」 「明津」      「12番地メゾン美鈴」 5万近く件数があり手作業では無理なので、関数かVBAで出来れば助かります。 都道府県とそれ以降の分割しかわかりません。 宜しくお願いします。

  • 住所データの編集の仕方

    エクセルで下記のような編集をしたいんですが、 関数を教えて頂けないでしょうか? 例)神奈川県横浜市西区中央1-1-1 中央ビル1F 東京都中央区丸の内1-1-1 丸の内1F     A        B        C         D 1  神奈川県  横浜市西区  中央1-1-1   中央ビル1F 2  東京都   中央区    丸の内1-1-1   丸の内1F A 都道府県 B 市町村区 C 番地等 D ビル名 このように分けるにはどうしたら良いでしょうか? 困ってます。お力添え宜しくお願い致します。

  • Excel 住所分け

    都道府県列に 東京都渋谷区神宮前1-13-23 ●●●ハウス 東京都世田谷区南烏山5丁目11-3 千葉県柏市若柴178番地4柏葉キャンパス6F と入ってますそれを 都道府県 市区郡 以降の住所(町名・番地) ビル名 と分けたいです。↑は最初から入ってます。 番地とビル名の間はスペースあったりなかったり 番地の表示も色々です。 F列     G列         H列         I列        都道府県  市区郡   以降の住所(町名・番地)   ビル名 東京都   渋谷区   神宮前1-13-23        ●●●ハウス 東京都   世田谷区  南烏山5丁目11-3 千葉県   柏市    若柴178番地4         柏葉キャンパス6F

  • 住所データから番地のみ取り出し○丁目と表示したい

    6,000件ほどの住所データ(エクセル)があります。(一都三県) そこから番地の「丁」部分の数字のみを取り出して「○丁目」と表示させたいのですが、 例外の表示もあり苦戦しております。 住所データの番地部分(数字とハイフン)は全角です。      A                      B (表示させたい) 1 神奈川県横浜市旭区善部町3-2     3丁目 2 埼玉県戸田市下前2-8-18        2丁目 3 神奈川県高座郡寒川町宮山928-1    - 4 神奈川県横浜市青葉区みたけ台21     - いろいろ調べてみてA1やA2の場合は下記の数式で希望の表示ができましたが、 A3やA4の住所もあるため、この場合はハイフン前の「8丁目」と表示されてしまいます。 数式=MID(I4816,FIND("-",I4816)-1,1)&"丁目" また二桁の丁目もあることにも気づき、混乱しております。 1つの作業数式でなくてもかまいませんのでご教授願います。 (WinXP、office2002)

  • エクセルで住所録管理データベースで

    エクセルで住所録管理データベースで (例) C列         D列 東京都台東区上野   1-234-1 神奈川県横浜市山手  2-84-6 埼玉県草加市弥勒   51-98 と入力されてますが A列にC列から 県名を抽出 B列に市・区名を抽出を 関数を使ってできないでしょうか? 又、C列の県名と市・区名を消したいのですが

  • EXCEL2007で2列の入力内容を集計するには?

    EXCEL2007で、次のような集計をどうするかわからず、困っています。 たとえば、各入力行に、 ----- 東京都  杉並区 東京都  千代田区 神奈川県 瀬谷区 神奈川県 横浜市 東京都  千代田区 東京都  武蔵野市 東京都  杉並区 神奈川県 横浜市 東京都  千代田区 ----- ...のように、2列にそれぞれ文字列が入っているデータにおいて、2列の語句の組み合わせで一番多いものをカウントアップし、多いもの順に表示させたいのです。 上の例でいえば、 東京都  千代田区 3 東京都  杉並区 2 神奈川県 横浜市 2 東京都  武蔵野市 1 神奈川県 瀬谷区 1 のようにカウントしたものを作りたいのです。 2つの語句を結合してしまってからピボットテーブルを使えばできそう、とまではわかってきたのですが、できれば2列に分かれたまま集計したいです。 お知恵をお貸しください。

  • Excelで住所の表示を丁目、番、号に統一させる

    現在、住所の番地の入力方式が以下のようにまちまちな状態です。 例: A市B町1-1-1 A市B町1丁目1-1 A市B町1丁目1番1号 等です。 住所データは1列に入っており、これをすべて「A市B町1丁目1番1号」(数字は半角)の形式に正規化したいです。 ・漢数字は含まれません(一部「丁目」部分だけ漢字がありますが、手動で数字に変更します。) ・数字、ハイフンは全角と半角が両方あります。(大半は全角) ・番地の後にビル名が入っているものがあります(番地とビル名の間はスペースが空いていたり空いていない場合があります。できれば、一律で半角スペースを空けるようにしたい) ・全ての住所は丁目、番、号の住居表示です。("X町1234番地"のようなものはない) 規則としては、最初の数字の後に"丁目"、2番目の数字の後に"番"、3番目の数字の後に"号"を付与すればいいかと思いますが、具体的にどのような関数を組めばよろしいでしょうか。

  • エクセルの配列

    エクセルの配列を使用しての関数がうまく出来なくて困っています。    A   B  C 1  1  1  東京都墨田区 2  1  1  東京都神奈川区 3  1  2  東京都杉並区 4  1  2  神奈川県横浜市 5  1  3  神奈川県川崎市 6  1  3  東京都多摩市 7  2  1  岩手県 8  2  1  大阪府 9  3  2  兵庫県 10  3  2  京都府 と並んでいます。 ここでA列=1 且つ B列=1又はB列=2 且つ C列が"東京都"という文字を含んでいる の総計を計算したいのですが(上の状態ならば「3」) {=SUM(SUMPRODUCT(IF(A1:A10=1,1,0))*(IF(OR(B1:B10=1,B1:B10=2),1,0))*(ISNUMBER(FIND("東京都",C$1:C10))))} と関数を入れても正しい値が出ません。どこがおかしいのでしょうか? 作業列を使わずに求めたいです。 どなたかご教授宜しくお願いします。

  • 白地図を探しています

    お世話になります。 東京都国分寺市・東京都台東区・神奈川県茅ヶ崎市の白地図で 町の境のあるものを探しています。 フリーソフトなど探してみたのですが、町の境まであるのがなかなかありません、何かありましたら教えてください。

  • EXCELのコピーについて・・・

    3つのセルに入力してある情報を1つのセルにまとめてコピーする事は可能でしょうか?? 例えば・・・A1のセルに神奈川県 B1のセルに横浜市C1のセルに本牧って入力してあるとしてそれをD1のセルに神奈川県横浜市本牧となるようにしたいんです。 あと・・・もしA1~A50までに「東京都」から始まる住所が入力されていたとしてそのA1~A50までの全てのセルから「東京都」という文字だけ削除する事って 可能でしょうか??? ちょっと分かりづらい説明ですみません。 どうかお願いします!!!

専門家に質問してみよう