【Excel】文字列を扱う関数がUnicodeサロゲートに対応

Excelにおいて文字列を扱うLEN, MID, SEARCH, FIND, REPLACEの各関数がUnicodeサロゲートに対応する方針であることが発表されましたね。そこで解説します。

Unicodeサロゲートとは何か?

「そもそもUnicodeサロゲートとは何?」と思われる方も多いと思います。使用頻度の少ない特殊な文字に割り当てられたコードのことで、通常の文字よりもコードが長くなります。ちょっと文字化けする可能性があるので、画像で示しますが以下の画像のような特殊な漢字はUnicodeサロゲート(日本ではサロゲートペアと呼ぶ人も多い)でないと表現できない漢字となっております。

Unicodeサロゲートでないと表示できない漢字の例

これらのあまり使われる頻度の少ない文字はWindowsですとVistaあたりから対応できるようになりました。仕組みとしては1996年にサロゲートを導入することは決まったそうですが、実際にOSで使えるようになったのはWindowsの場合は約10年後のVistaからだったようです。

Excelでも古い関数はサロゲートに対応していなかった

Excelも歴史をひもとくと、Vista時代より前から存在するので、古い関数は当然のごとくUnicodeサロゲートには対応していませんでした。「Unicodeサロゲートに対応していないと何か不都合なことがあるの?」と思われるかもしれませんので、実例をあげて解説します。例えば、下の画像に示したように一文字しかないはずの漢字をLen関数を使って文字数をカウントした場合になんとサロゲートでしか表現できない漢字は2文字と判定されてしまいます。これはかなり不都合で、サロゲート文字が含まれていると文字列の関数処理が想定通りの処理とならないことがわかります。

サロゲート文字にLen関数を使用した例

もちろん、サロゲートでしか使えない特殊な文字は入力できないように制限すれば大丈夫という考え方もあります。実際に日本政府が使用している「e-Gov電子申請」もサロゲートは非対応で入力できないようになっているので、現状では入力できないようにしてもそこまで非難されることはないと思います。ただ、多様性の時代であり10年後、20年後はサロゲートへの対応も普通となっていく可能性もあります。

Excelの古い関数もサロゲートに対応

そんな中、Excelの文字列を扱う関数であるLEN, MID, SEARCH, FIND, REPLACEがUnicodeサロゲートに対応することが発表されました。Windows Vistaがリリースされてから約20年がたとうとしていますが、遂にExcelの古い関数もサロゲートに対応します。

実際に、対応しているバージョンでLen関数を使用したのが下の画像でちゃんとサロゲートでしか表現できない漢字も1文字としてカウントしています。

サロゲートに対応する前後のExcelの関数の結果を比較

スケジュール

現在はベータ版のみがサロゲートに対応したLEN, MID, SEARCH, FIND, REPLACE関数が使用可能です。カレントチャネルでは2026年1月までに全てのユーザーでこの最新版のLEN, MID, SEARCH, FIND, REPLACE関数が使用可能となる予定となっております。

月次エンタープライズチャネルや半期エンタープライズチャネルの実装計画は発表されていません。

また、以前のExcelと計算結果の整合性を保つためにわざとサロゲートに対応していない状態に戻すことも可能です。やり方としては 数式タブ→計算方法の設定→互換バージョン でバージョン1を選ぶことで以前の計算方法に戻すことも可能です。

移行期の混乱

カレントチャネルに関しては2026年1月よりサロゲートに対応したバージョンがデフォルトになると発表されているので、Excelのチャネルやバージョンによって関数の結果が異なるという移行期が発生します。もちろん10年もすればサロゲートに対応した関数が主流になるので問題はありませんが、移行期は混乱が発生する可能性があるためサロゲートでしか表現できない漢字が入ったワークシートなどの取り扱いには注意が必要です。

参考資料

Microsoft 公式ブログ