• ベストアンサー

セル内で漢字と共存している全角・半角数字の統一

質問なんですが。 数百とデータが入力された住所録の中で下記の様に住所が入力されているセル列があるんですけど、 ○○市○○町1-2-3 ○○区○○町4-5-6 と丁目・番地・号が半角全角数字が各データ毎にバラバラに入力されている住所データ列のセル内の数字を全て半角に統一したいのですが、やはり各セルを修正していくしかないんでしょうか? 他に方法がありましたら教えてください>< よろしくお願いします。 Excel2003を使用しております。

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

  • ベストアンサー
noname#176215
noname#176215
回答No.1

カタカナも半角になっていいなら ASC関数を使えば一括処理できます。 それが嫌な場合は 作業列を2つ使って A1セルにデータがあるとして ■B1セル =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( A1,"1",1),"2",2),"3",3),"4",4),"5",5) ■C1セル =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( B1,"6",6),"7",7),"8",8),"9",9),"0",0) とします。

その他の回答 (3)

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.4

では、関数やマクロを使わない方法を回答してみます。  [編集] → [置換] で全角の数字を半角に置き換えましょう。 数字ですので 0 から 9 まで10回繰り返す必要がありますが、シートに不要な関数やマクロを残さずに済みます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

列数が少ない(住所列だけとか。関数を入れるので数十列は困る) 英数カナ文字を全角に変換する(全角に統一してよいとして)、 でJIS関数があります。 この方法が出てないようですが、どうですか =JIS(B1) 東1-2-3 東1-2-3 ヒガシ2-3 ヒガシ2-3 マンションA-2 マンションA-2

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

別解です。 VBAで、アクティブシートの使用しているセルを全て処理対象にしています。replaceToNarrowを実行してください。 出典は分からなくなってしまいました。原作者さんご容赦下さい。 2000用のコードですが、2003でも動くかも。 なお、数字だけでなく、全角のハイフン、()も半角に変換するコードです。 おまけは全角のーも半角ハイフンに直します。必要なら’を外して下さい。 Sub replaceToNarrow() Dim rng As Range Application.ScreenUpdating = False For Each rng In ActiveSheet.UsedRange With rng .Value = cnv_narrow(.Value) 'おまけ ー も半角-に直したい時 '.Value = cnv_hyphen(.Value) End With Next Application.ScreenUpdating = True End Sub Private Function cnv_narrow(target As String) Dim regEx, Match, Matches Set regEx = CreateObject("VBScript.RegExp") regEx.Pattern = "([0-9-\(\)])+" regEx.IgnoreCase = True regEx.Global = True Set Matches = regEx.Execute(target) cnv_narrow = target If Matches.Count > 0 Then For Each Match In Matches regEx.Pattern = Match.Value regEx.IgnoreCase = False cnv_narrow = regEx.Replace(cnv_narrow, StrConv(Match.Value, vbNarrow)) Next End If Set regEx = Nothing End Function 'おまけ Private Function cnv_hyphen(target As String) Dim regEx, Match, Matches Set regEx = CreateObject("VBScript.RegExp") regEx.Pattern = "ー" regEx.IgnoreCase = True regEx.Global = True Set Matches = regEx.Execute(target) cnv_hyphen = target If Matches.Count > 0 Then For Each Match In Matches regEx.Pattern = Match.Value regEx.IgnoreCase = False cnv_hyphen = regEx.Replace(cnv_hyphen, "-") Next End If Set regEx = Nothing End Function

関連するQ&A

専門家に質問してみよう