• ベストアンサー

Excel カタカナと英数字の混在セルでカタカナのみ全角にする

同じセルの中に、半角カタカナと英数字が混在しています。 カタカナのみ全角にし、英数字は半角の設定のままにする関数を教えてください。 アイウエABCショウジ(半角カタカナ+半角英数字) ⇒ アイウエABCショウジ(全角カタカナ+半角英数字)

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

  • ベストアンサー
  • puzou
  • ベストアンサー率35% (102/284)
回答No.1

例の通りに半角カタカナと英数字のみが混在しているなら、 少し邪道ですが、 PHONETIC というフリガナを抽出する関数で代用できます。 半角カタカナは全角カタカナに、半角英数字は半角英数字のままの結果が出ます。 もし、そのセルに平仮名があればカタカナになってしまいますし、 そのセルに「日本とセカイA」と直打ちしたら 「ニホントセカイA」 となってしまいます。

googooquestion
質問者

お礼

セルにはカタカナと英数字しか入っていないので、 PHONETIC関数で、望み通りの結果が得られました。 ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

マクロもあり、ということでしたら、以下のようなコードがあります。 正規表現で、パターンを作ってあります。ただし、これは、Replace関数を使っていますので、もし、Excel97でお使いの場合は、Application.Substitute(c.Value, Match, buf)とすればよいと思います。 Sub Han2Zen()  Dim Re As Object  Dim Rng As Range  Dim myPattern As String  Dim buf As String  Set Re = CreateObject("VBScript.RegExp")  Set Rng = Selection 'マウスで選択します。  myPattern = "([" & Chr(166) & "-" & Chr(223) & "]+)"  '半角カタカナ:Web上では禁じられているためで、本来はそのまま入れられる  With Re   .Pattern = myPattern   .Global = True   For Each c In Rng    If VarType(c) = vbString Then     Set Matches = .Execute(c)     For Each Match In Matches      buf = StrConv(.Replace(Match, "$1"), vbWide)      'パターンにあった部分は全角にしています。      c.Value = Replace(c.Value, Match, buf) '*     Next    End If   Next   Set Re = Nothing  End With End Sub 確か、半角から全角にするときに、ワークシート上では、自動的に、半濁音や濁音付き文字は、キャストされて一字になったような気がします。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

以前に同一内容について回答したことがあります。 参考URLをご覧ください。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1153932
googooquestion
質問者

お礼

マクロ等の知識がないので、今回は#1の方法でやりましたが、今後、ご回答いただいた方法を勉強します! ありがとうございました。

関連するQ&A