【Excel】名前に外字が使用されているか確認する関数組み合わせ
Excelでリストにある名前に外字(機種依存文字)が含まれているかをチェックする方法をご紹介します。
1. 外字とは?
外字とは、一般的なフォントに含まれていない特殊な文字のことを指します。特に、Windows 環境でのみ使用される機種依存文字は、他のシステムで正しく表示されないことがあります。
例えば、以下のような文字は外字の可能性があります。
- 環境依存文字(①②③など)
- JIS 第3・第4水準の漢字
- 独自に作成されたカスタム文字
2. Excelで外字を判定する方法
Excelの関数だけで外字を判定することは難しいですが、Unicodeのコードポイントを利用すれば可能です。
① UNICODE関数で文字コードを取得
Excelの UNICODE
関数を使えば、文字のUnicodeコードポイントを取得できます。
例えば、A1セルにある名前の各文字のUnicodeを取得するには、以下の式を使用します。
=UNICODE(MID(A1, 1, 1))
この式は、A1セルの1文字目のUnicode値を返します。MID関数を使うことで、2文字目以降も同様に取得できます。
② JIS規格に基づいたチェック
一般的に、JIS 第1・第2水準の漢字は問題なく利用できますが、第3・第4水準の漢字や外字は注意が必要です。
JIS水準に基づいた判定を行うには、Unicodeの範囲を確認します。
例えば、JIS 第1・第2水準の範囲は以下の通りです。
- JIS 第1水準: U+4E00 ~ U+9FFF(一般的な漢字)
- JIS 第2水準: U+3400 ~ U+4DBF(一部の追加漢字)
これ以外の範囲にある文字が含まれているかを判定することで、外字かどうかを確認できます。
③ 外字判定用のExcel関数の組み合わせ
次のような式を使って、名前の中に外字が含まれているかをチェックできます。
=IF(UNICODE(MID(A1, 1, 1))>57344, "外字の可能性あり", "OK")
この数式では、Unicodeが57344(0xE000)以上の文字が含まれているかを確認しています。この範囲は、外字エリア(PUA: Private Use Area)に該当します。
さらに、名前全体をスキャンする場合は、以下のような配列数式を使うと便利です(Excel 365 / 2019 以降対応)。
=TEXTJOIN(",", TRUE, IF(UNICODE(MID(A1, ROW(INDIRECT("1:" & LEN(A1))), 1))>57344, "外字", ""))
この式では、名前の各文字をチェックし、外字に該当する場合「外字」と表示します。
3. マクロ(VBA)を使って外字をチェック
Excelの関数だけでなく、VBAを使うとより柔軟なチェックが可能です。以下のコードを使えば、A列の全データをスキャンし、外字が含まれている行をハイライトできます。
Sub 外字チェック()
Dim ws As Worksheet
Dim i As Integer, j As Integer
Dim txt As String, charCode As Long
Set ws = ActiveSheet
For i = 2 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' A列のデータを走査
txt = ws.Cells(i, 1).Value
For j = 1 To Len(txt)
charCode = AscW(Mid(txt, j, 1))
If charCode >= 57344 Then ' 外字範囲 (PUA)
ws.Cells(i, 1).Interior.Color = RGB(255, 200, 200) ' 赤くハイライト
Exit For
End If
Next j
Next i
MsgBox "外字チェックが完了しました。", vbInformation
End Sub
このVBAマクロを実行すると、A列のデータをスキャンし、外字が含まれているセルを赤くハイライトします。
4. まとめ
Excelで名前の中に外字が含まれているかを判定する方法を紹介しました。
- UNICODE関数を使って文字コードを取得
- JIS規格に基づいて外字の範囲を判定
- 配列関数やVBAを使って効率的にチェック
外字の問題はシステムによって影響が異なるため、事前にチェックしておくとトラブルを防げます。
ぜひ、今回紹介した方法を活用してみてください!