プロが教える店舗&オフィスのセキュリティ対策術

同じセルの中に、半角カタカナと英数字が混在しています。
カタカナのみ全角にし、英数字は半角の設定のままにする関数を教えてください。

アイウエABCショウジ(半角カタカナ+半角英数字)
⇒ アイウエABCショウジ(全角カタカナ+半角英数字)

A 回答 (3件)

例の通りに半角カタカナと英数字のみが混在しているなら、


少し邪道ですが、
PHONETIC
というフリガナを抽出する関数で代用できます。
半角カタカナは全角カタカナに、半角英数字は半角英数字のままの結果が出ます。

もし、そのセルに平仮名があればカタカナになってしまいますし、
そのセルに「日本とセカイA」と直打ちしたら
「ニホントセカイA」
となってしまいます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/04/27 12:03

マクロもあり、ということでしたら、以下のようなコードがあります。


正規表現で、パターンを作ってあります。ただし、これは、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

確か、半角から全角にするときに、ワークシート上では、自動的に、半濁音や濁音付き文字は、キャストされて一字になったような気がします。
    • good
    • 0

以前に同一内容について回答したことがあります。


参考URLをご覧ください。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1153932
    • good
    • 1
この回答へのお礼

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

お礼日時:2005/04/27 12:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!