質問: unicodeコードポイントをexcelスプレッドシートの対応する文字に変換する char()関数を使用して、拡張ascii値を文字に変換します。unicodeコードポイントを文字に変換するには何を使用しますか?ヘブライ語変換チャートを作成しています。たとえば、 コードポイント1489(u + 05d1) は文字「ベット」です。 a列に1489あり、b列にベットを表示したい。
回答: 補足キャラクターを作成する必要がある人のために明確にするために: excel 2013以降では、unichar()関数( tehmacdawgの回答 に示されている)がこれを適切に処理します。目的のunicodeコードポイントを渡すだけです。 =unichar(128126) 生成する必要があります:????(u + 1f47e) 2013より前のexcelでは、 stema's answer に示されている関数が適切な出発点ですが、chrw vb関数はbmpコードポイント(つまり値0-65,535/0xffff)。補助文字の作成は可能ですが、サロゲートペアの両方のコードユニットを生成するには、関数を2回呼び出す必要があります。 =concatenate(unicode(55357), unicode(56446)) 生成されます:????(u + 1f47e) これは少し扱いにくいので、stemaのコードを次のように変更しました。これにより、コードポイント/ utf-32値がutf-16サロゲートペアに変換されます。 function unicodefromint(val as long) if val < 0 or val > 1114111 then unicodefromint = "error: value must be between 0 and 1114111!!" goto getout end if if val >= 55296 and val <= 57343 then unicodefromint = "error: surrogate code points are not displayable!!" goto getout end if if val < 65536 then unicodefromint = chrw(val) else unicodefromint = chrw(55232 + int(val / 1024)) & chrw(56320 + int(val mod 1024)) end if getout: end function function unicodefromhex(val as string) unicodefromhex = unicodefromint("&h" & val) end function 上記のすべてのコードを1つのモジュールとして追加すると、次の両方の関数呼び出しが実行されます。 =unicodefromint(128126) =unicodefromhex("1f47e") 生成されます:????(u + 1f47e) これら2つのオプションの詳細、および他の言語とプラットフォームのunicodeエスケープシーケンスについては、私の投稿を参照してください。 さまざまな言語およびプラットフォームにわたるunicodeエスケープシーケンス(補足文字を含む)