こんにちは、デジタル事業本部の藤田です。
Excel で半角カナを全角に置き換えるには、JIS 関数を使用するのが一般的です。セルの隣に列を挿入し、 =JIS([セル参照]) と関数を記述することで全角に変換された文字列が表示されます。
● JIS 関数で変換される文字
Excel ヘルプによれば JIS 関数の説明には
(略)文字列内の半角 (1 バイト) の文字を全角 (2 バイト) の文字に変換します。この関数の名前および変換する文字は、使用する言語の設定によって異なります。日本語では、文字列内の半角 (1 バイト) の英数カナ文字を全角 (2 バイト) の文字に変換します。
参照:JIS 関数 - Office サポート
とあります。カナ以外にも英数も含まれているということですが、どの文字が変換されるのでしょうか? 変換対応表が見当たらなかったので検証してみました。1から順に CHAR 関数で文字一覧をつくり(B 列)、JIS 関数で変換(C 列)し、変換された文字を CODE 関数でコード番号を返す(D 列)表を作成しました。
すると、英数カナ文字以外にもいくつかの記号が変換されたのがわかりました。また、CODE 関数で返すコードは環境にも依存するようです。いずれにせよ意図しない文字が変換されてしまうのが困ったところです。さらに、列を追加せずにセルの値を変換できないものでしょうか?
● NKF を使ってみる
発想を変えて、Network Kanji Filter こと NKF コマンドを使う方法を考えてみました。NKF とは異なる漢字コードを変換する Linux のコマンドです。Mac OSであれば ruby がデフォルトでインストールされているので呼び出して使用することが可能です。半角カナの全角変換処理はオプションの -X を指定します。このオプションは JIS X 0201 半角片仮名を JIS X 0208 に変換するのでいわゆる半角カナが対象となります。
Mac で使用するので今回は AppleScript で記述しています。サンプルコードは以下の通りです。
echo -n:末尾の改行を出力しない /usr/bin/ruby -r nkf -ne -r ライブラリ読み込み。 -n ループ -e スクリプトを実行する(この後の'〜'の部分)。 'print NKF.nkf(\"-m0wWX\", $_)' :NKFを実行する。 引数 -m0:MIME のデコードをしない。 -w 出力コードを UTF-8 に指定 -W 入力コードを UTF-8 に仮定 -X JIS X 0201 半角カナを JIS X 0208 に変換する
※ 選択したセルのみ変換
Excel スクリプトメニューに入れてから実行すると、選択したセルの文字を全角に変換します。
このスクリプトはタクトシステムのHPで無料配布していますので、よろしかったらぜひダウンロードしてください。