やること
【Excel】Unicodeを表示する関数 #VBA - Qiitaで文字→Unicodeの関数を用意したが、逆がなかったのでCopilot先生に作成してもらう。
作成された関数
'------------------------------------------------------------------
' 関数 : UnicodePointToChar
' 説明 : "U+4E00" または "4E00" のような Unicode コードポイント表記から
' 実際の文字(漢字など)を生成して返す。
' 引数 : codePoint - "U+XXXX" または "XXXX" の形式の16進コード
' 戻り値 : 対応する1文字(例: "U+4E00" → "一")
' 使用例 : =UnicodePointToChar("U+4E00") → "一"
' =UnicodePointToChar("4E8C") → "二"
'------------------------------------------------------------------
Function UnicodePointToChar(codePoint As String) As String
Dim hexStr As String
Dim code As Long
' "U+" が付いている場合は取り除く
hexStr = Replace(UCase(codePoint), "U+", "")
' 16進 → 数値
If Len(hexStr) > 0 Then
code = CLng("&H" & hexStr)
UnicodePointToChar = ChrW(code)
Else
UnicodePointToChar = ""
End If
End Function
【Excel】Unicodeを表示する関数 #VBA - Qiitaにコメント追加。
'------------------------------------------------------------------
' 関数 : GetUnicodeChar
' 説明 : セル内の1文字を Unicode コードポイント (U+XXXX) 形式で返す。
' 引数 : Cell - 対象セル(1文字のみを想定)
' 戻り値 : "U+4E00" のような Unicode コードポイント文字列
' 使用例 : =GetUnicodeChar(A1) (A1 が "一" の場合 → "U+4E00")
'------------------------------------------------------------------
Function GetUnicodeChar(Cell As Range) As String
Dim ch As String
Dim code As Long
ch = Cell.Value
If Len(ch) > 0 Then
code = AscW(ch)
GetUnicodeChar = "U+" & Hex(code)
Else
GetUnicodeChar = ""
End If
End Function
背景
ニュース |『涼宮ハルヒの御礼』公式サイト

これの一部をコピペすると、以下の通り。

上記の関数で「⽉」のコードを調べる。(「⽓」は参考)

→「U+2F49」は「康熙部首」
漢字のようで漢字でないUnicodeの「康熙部首」と「CJK部首補助」|TechRacho by BPS株式会社
おまけ

とりあえず、簡易的な UTF-8<->文字 の関数も作成してもらう。
UTF-8->文字
''------------------------------------------------------------------
'' 関数 : HexToUtf8Text
'' 説明 : スペース区切りの UTF-8 16進バイト列を Unicode 文字列に変換する。
'' 例: "E3 81 82" → "あ"
'' 引数 : hexString - "E3 81 82" のようなスペース区切りの16進バイト列
'' 戻り値 : UTF-8 として解釈した文字列
'' 使用例 : =HexToUtf8Text("E3 81 82") → "あ"
'' 注記 : StrConv を使う簡易版(UTF-8 として正しく解釈しない場合がある)
'' : Windows の内部コードページに依存する
'' : ※「バイト列 → Unicode」変換を Windows の現在のコードページ
'' : (ANSI コードページ)に従って行う
'' : -> ASCII(0x00~0x7F)だけのデータだけ可能
''------------------------------------------------------------------
'Function HexToUtf8Text(hexString As String) As String
' Dim bytes() As Byte
' Dim hexParts() As String
' Dim i As Long
'
' hexParts = Split(hexString, " ")
' ReDim bytes(UBound(hexParts))
'
' For i = 0 To UBound(hexParts)
' bytes(i) = CByte("&H" & hexParts(i))
' Next i
'
' HexToUtf8Text = StrConv(bytes, vbUnicode)
'End Function
'------------------------------------------------------------------
' 関数 : Utf8HexToString
' 説明 : UTF-8 の16進バイト列を ADODB.Stream を使って Unicode 文字列に変換する。
' HexToUtf8Text よりも UTF-8 の扱いが正確で、複数文字にも強い。
' 引数 : hexText - "E3 81 82 E3 81 84" のようなスペース区切りの16進バイト列
' 戻り値 : UTF-8 としてデコードされた文字列
' 使用例 : =Utf8HexToString("E3 81 82 E3 81 84") → "あい"
' 注記 : ADODB.Stream を使う
' : Excel の内部コードページに依存しない
'------------------------------------------------------------------
Function Utf8HexToString(hexText As String) As String
Dim bytes() As Byte
Dim arr() As String
Dim i As Long
' スペース区切りを配列に
arr = Split(hexText, " ")
ReDim bytes(UBound(arr))
' 16進 → Byte
For i = 0 To UBound(arr)
bytes(i) = CByte("&H" & arr(i))
Next i
' ADODB.Stream を使って UTF-8 → Unicode 変換
Dim stm As Object
Set stm = CreateObject("ADODB.Stream")
stm.Type = 1 'binary
stm.Open
stm.Write bytes
stm.Position = 0
stm.Type = 2 'text
stm.Charset = "UTF-8"
Utf8HexToString = stm.ReadText
stm.Close
End Function
文字->UTF-8
'------------------------------------------------------------------
' 関数 : StringToUtf8Hex
' 説明 : 文字列を UTF-8 でエンコードし、スペース区切りの16進バイト列に変換する。
' 例: "あ" → "E3 81 82"
' 引数 : text - UTF-8 に変換したい文字列(1文字でも複数文字でも可)
' 戻り値 : UTF-8 の16進バイト列(スペース区切り)
' 使用例 : =StringToUtf8Hex("あ") → "E3 81 82"
' : ※ADODB.Stream(Charset="UTF-8")は UTF-8 BOM(EF BB BF) を
' : 必ず付けるため、除去する
'------------------------------------------------------------------
Function StringToUtf8Hex(text As String) As String
Dim stm As Object
Dim bytes() As Byte
Dim i As Long
Dim startIndex As Long
Dim result As String
' UTF-8 で書き込み
Set stm = CreateObject("ADODB.Stream")
stm.Type = 2 'text
stm.Charset = "UTF-8"
stm.Open
stm.WriteText text
stm.Position = 0
stm.Type = 1 'binary
bytes = stm.Read
stm.Close
'--------------------------------------------
' UTF-8 BOM (EF BB BF) が付いている場合は除去
'--------------------------------------------
If UBound(bytes) >= 2 Then
If bytes(0) = &HEF And bytes(1) = &HBB And bytes(2) = &HBF Then
startIndex = 3 'BOM の3バイトをスキップ
Else
startIndex = 0
End If
Else
startIndex = 0
End If
' バイト列を16進文字列に変換
For i = startIndex To UBound(bytes)
result = result & Right("0" & Hex(bytes(i)), 2)
If i < UBound(bytes) Then result = result & " "
Next i
StringToUtf8Hex = result
End Function
補足:Qiitaでの記事
以下の検索をしたところ、248件ヒットした。(2026/03/22時点)
「Excel 文字コード UTF-8 Unicode」の検索結果 - Qiita
以下、適当に紹介
。
文字コード
unicodeとは?文字コードとは?UTF-8とは? #Python - Qiita
最終更新日 2019年12月06日 投稿日 2018年10月14日
文字コードとは何か? #初心者 - Qiita
最終更新日 2024年10月01日 投稿日 2024年04月04日
文字コードとは #Excel関数 - Qiita
投稿日 2024年01月31日
「文字化け」のナゾを解く!文字コードとUTF-8を素人でもわかるように解説 #初心者 - Qiita
最終更新日 2025年12月10日 投稿日 2025年12月10日
文字コードについて、バイナリを眺めながら入門 #文字コード - Qiita
最終更新日 2020年12月29日 投稿日 2020年12月25日
文字コードとバイト数を完全整理|UTF-8・Shift-JIS・半角カナの落とし穴まで #初心者向け - Qiita
投稿日 2026年03月09日
文字コードで躓いた話 #初心者 - Qiita
最終更新日 2022年12月16日 投稿日 2022年12月16日
【社内勉強会】Web開発者に知ってほしい「文字コード」の話(2017/04/19) #勉強会 - Qiita
最終更新日 2017年07月05日 投稿日 2017年04月18日
Shift-JIS, UTF-8をC言語で扱うために文字コードについて調べた #Unicode - Qiita
最終更新日 2019年11月24日 投稿日 2019年11月24日
[備忘録] PowerShell 5.1 日本語環境の文字コード #Windows - Qiita
投稿日 2025年06月04日
BOM
UTF-8 BOMについて #bom - Qiita
最終更新日 2021年02月19日 投稿日 2021年02月15日
UTF-8 テキストファイルを BOM 付へ変換(シェルスクリプト) #ShellScript - Qiita
最終更新日 2025年02月14日 投稿日 2019年12月04日
テキストファイルのBOM(Byte Order Mark)とは #CSV - Qiita
投稿日 2022年01月30日
CSVファイルをExcelで開くときの文字化け対策「BOM」って? #bom - Qiita
最終更新日 2021年07月07日 投稿日 2021年07月07日
UnicodeとBOM #.NET - Qiita
投稿日 2022年11月09日
PythonでUTF-8 with BOMを開く #Python - Qiita
最終更新日 2023年04月19日 投稿日 2014年03月28日
BOMを削除する方法(UTF-8) #Java - Qiita
最終更新日 2020年01月29日
投稿日 2020年01月26日
CSVファイルをExcelで文字化けさせないために知っておくこと(エンコードとBOM) #Python - Qiita
投稿日 2024年01月17日
ツール/EXCEL tips
[VBA]ExcelでUTF-8とUTF-16LEの絵文字💖、異体字辻󠄀、サロゲートペア𠮷の番号を求める #emoji - Qiita
最終更新日 2023年02月20日 投稿日 2023年02月20日
VBAで絵文字💖 #Excel - Qiita
最終更新日 2017年12月12日 投稿日 2017年12月12日
VBAで様々な文字コードのテキストを読込めるクラスを作った(Win限定?) #Excel - Qiita
最終更新日 2021年03月26日 投稿日 2021年02月11日
Excel VBA Excel 2013 Later セルに入っている文字のコードを UTF-16LE UTF-8 EUC-jp Shift-Jisに変換してイミディエイトに出力する #Unicode - Qiita
最終更新日 2020年11月29日 投稿日 2020年11月27日
Excel for Microsoft 365 VBA Win32Apiとスピルを使いすべての文字のUTF-16 UTF-8 SJisの文字コードを取得する #Win32API - Qiita
最終更新日 2020年11月22日 投稿日 2020年11月22日
Excel VBA UTF-8 Decode セルの文字をUTF-8の16進コードポイントに分解する #Unicode - Qiita
投稿日 2023年02月23日
VBScript/VBAで UTF-8を 自分で解読する関数 #vbs - Qiita
投稿日 2021年12月25日
VBAで Windows APIを使った UTF-8 ←→Unicode相互変換 #Excel - Qiita
最終更新日 2018年05月30日 投稿日 2018年05月30日
Powershellでファイルの文字コードを変換 #PowerShell - Qiita
最終更新日 2018年05月23日 投稿日 2016年11月06日
UTF-8のCSVを文字化けしないでExcelで開く方法 (手動) #Excel - Qiita
最終更新日 2021年12月26日 投稿日 2021年12月26日
Excelから保存したUnicodeテキストを読み込む #PHP - Qiita
最終更新日 2016年02月11日 投稿日 2016年02月11日
Office 2016 for MacのVBAでUTF-8テキストファイルを出力する #Excel - Qiita
最終更新日 2020年10月06日 投稿日 2018年04月25日
サービスからダウンロードできる CSV ファイルを Excel で文字化けさせない #Excel - Qiita
投稿日 2018年08月30日
とりあえず、ここまで。
