マクロもあり、ということでしたら、以下のようなコードがあります。
正規表現で、パターンを作ってあります。ただし、これは、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
確か、半角から全角にするときに、ワークシート上では、自動的に、半濁音や濁音付き文字は、キャストされて一字になったような気がします。
お礼
セルにはカタカナと英数字しか入っていないので、 PHONETIC関数で、望み通りの結果が得られました。 ありがとうございました。