先日、某所の分科会でExcelのセミナーをやったとき、受講された方から「入力済みの全角文字や半角文字を後から統一するにはどうしたらいいですか?」というご質問をいただきました。話の流れから入力されている文字は「マンション」や「アパート」などのカタカナではないかと思います。その場では「関数を使うとできますよ」とお答えしましたが、具体的なやり方まではお話ししませんでしたので、ここで解説します。
下図のようなデータが入力されていたとします。
「スズキ」と「サトウ」は全角、「ヤマダ」と「ササキ」は半角のカタカナとして入力されています。全角のカタカナと英数字を半角に変換するにはASC関数を使います。
反対に、半角のカタカナと英数字を全角に変換するのがJIS関数です。
関数で変換した結果を、元のセルにコピーするときには注意が必要です。
関数などの計算式が入力されているセルをコピーすると、コピー先には参照先アドレスが自動調整された計算式が貼り付きます。たとえば上図のC列をA列にコピーすると、自動調整に矛盾が生じるためエラーになります。A列より左には列がありませんからね。
よしんばエラーにならなかったとしても、貼り付けられるのが計算式であることに違いはありません。関数など計算式の結果をデータ(値)としてコピーするには、[編集]メニューの[形式を選択して貼り付け]機能を使います。
コピー元のC列を選択して[コピー]ボタンをクリックし、貼り付け先のセルA1を選択したら、[編集]-[形式を選択して貼り付け]をクリックします。
実行すると[形式を選択して貼り付け]ダイアログボックスが表示されますので、[値]チェックボックスをオンにして[OK]ボタンをクリックします。
これで、計算式の結果がデータ(値)として貼り付けられます。
非常に便利なASC関数とJIS関数ですが、ひとつ特徴があります。それは、両関数が変換するのはカタカナと英数字とスペースの全てだということです。
上図のように、セル内にカタカナや英数字が混在している場合、ASC関数やJIS関数はカタカナ・英数字・スペースのすべてを変換します。カタカナだけを変換することはできません。「半角の英数字はそのままで、半角のカタカナだけを全角に変換したい」というのでしたら、マクロを使うのがいいでしょうね。
いろんな方法がありますが、たとえば次のようにします。
Sub Sample() ''アクティブセルの半角カタカナだけを全角に変換する Dim i As Long, buf As String For i = 1 To Len(ActiveCell.Value) If Mid(ActiveCell.Value, i, 1) Like "[ア-ン]" Then buf = buf & StrConv(Mid(ActiveCell.Value, i, 1), vbWide) Else buf = buf & Mid(ActiveCell.Value, i, 1) End If Next i ActiveCell.Value = buf End Sub