【新機能】関数の互換性バージョン


本稿でご紹介するのは、「Microsoft 365 AppsのExcel」に関する内容であり、「Insider Program」のExcelで動作の確認をしています。Excel 2024などの"永続ライセンス版"は含まれませんし、Microsoft 365からインストールしたExcelであっても、更新のタイミングなどによっては、実装されていない場合もあります。


セル内の数式では、参照しているセルの値が変更されると、数式の結果が自動的に更新されます。しかし、いわゆる「再計算」を"手動"に切り替えると、セルの値が変更されても、数式の計算結果は自動的に更新されません。マクロでは、大量のセルに代入するとき、そのつど再計算が行われるのを防ぐために、VBAのコードで"手動"と"自動"を切り替えたりしますが、この「再計算」の設定を手で変更する方は少ないのでは?現在のパソコンは昔に比べて高性能ですから、数式の再計算で待たされるケースは少なくなりました。ちなみに、本稿の内容とは直接関係ありませんが、この「再計算」が"手動"のとき、Excelの挙動にも新しい仕組みが追加されています。まず、そちらからご紹介します。

上図は、「再計算」を"手動"にしています。この状態で、セルA2の値を変更してみます。

セルC2の計算結果"60"に取り消し線が表示されます。これは「再計算が"手動"になっており、数式の計算結果は古い」という意味です。この取り消し線は、フォントの書式設定ではありません。

取り消し線を消すには「再計算」の設定を"自動"にします。

さて、本稿のテーマは、これではありません。「再計算」の"自動"と"手動"を切り替えるところって、あまり使わない方が多いと思いますけど、今は下図のようになっています。

何やら見慣れない「互換性バージョン」という項目があり、選択肢として「バージョン1(推奨)」と「バージョン2(最新)」が用意されています。意味不明ですよね。以下で詳しく解説します。

セル内に絵文字を入力した場合

Excelには文字列を扱う関数が、たくさん実装されています。たとえば、文字数を調べるLEN関数を試してみましょう。

LEN関数は文字数を返します。全角も半角も、どちらも1文字としてカウントします。一方のLENB関数は"バイト数"をカウントします。全角は2、半角は1として数えます。結果をご覧になって、違いを比べてください。

さて、Windowsには"絵文字"が搭載されています。

私はめったに使いませんが、そういえば最近Webでよく見ますね。ブラウザでChatGPTやGeminiなどを使っていると、よく回答の中に✅や❌などが含まれています。あれって絵文字だったんですね。確かに、画像を表示するより簡単です。かなり昔のWindowsから実装されていて、最近はカラフルなものも多いです。こうした絵文字は、通常の文字と(ほぼ)同じように扱えるので、もちろんセルの中にも入力できます。

では、この"絵文字"を含む文字列の、文字数を調べてみましょう。使うのは先と同じ関数です。

セルC5のLENB関数をご覧ください。"田中"は「2バイト×2文字=4バイト」です。"12"は「1バイト×2文字=2バイト」そして最後の"😊"は「2バイト×1文字=2バイト」で、合わせて8バイトという結果です。これは、いいですよね。さて、問題はセルC2に入力したLEN関数です。LEN関数は、全角半角を区別せず、両者を1文字としてカウントするはずですが、結果は6文字となっています。おかしいですよね。5文字になるはずです。どう考えても怪しいのは、絵文字の"😊"です。別の絵文字も試してみましょう。

絵文字は「絵文字パネル」だけでなく、MS-IMEの変換でも入力できます。今度は"❤"としました。こちらも、文字数をカウントしてみます。

これは、どう見てもおかしいです。1文字にしろ、2バイトにしても、どっちにしても同じ結果になってほしいです。ちなみに、これは「互換性バージョン」が「バージョン1(推奨)」の状態、つまり"今まで"の挙動です。

これを「バージョン2(最新)」に変えてみます。

[計算方法の設定]にある「互換性バージョン」とは、こういうことです。セル内に"絵文字"が入力されているとき、その"絵文字"を、どう扱うかを区別します。

セル内に、データとして"絵文字"が入力されているとき、従来のように「1つの絵文字を、1つの全角(2バイト)文字」とするのが「バージョン2(最新)」です。どちらが正確か、というよりも、今までの感覚に合わせるための設定でしょう。この「互換性バージョン」によって違いが生じるのは、現在のところ LEN関数, MID関数, FIND関数, SEARCH関数, REPLACE関数 と発表されています。今後は分かりません。

さらに、2026年1月からは「バージョン2」が標準になるらしいです。なお、これは"ブックごと"の設定です。

結論

文字コードの話は、とても、すごく、メッチャ難しいです。今回も、もし掘り下げるのなら「Shift-JIS」「Unicode」「エンコード」「UTF-8」「UTF-16」「サロゲートペア」などの概念が必要となり、さらにExcelが「過去との互換性を保つために、独自の処理をしている」という複雑な事情も関わってきます。なので、結論を言いますので、これだけ覚えといてください。

  • セルの中に"絵文字"がないのなら、この「互換性バージョン」というのは、ほとんどの場合影響ないので、心配しなくていい。何らかの事情で"絵文字"が含まれる場合は「互換性バージョン」を確認してください。

ということです。文字コードについて、いくつか"補足"を書きましたが、あまりにも長く深くなったので、一切割愛しました。本稿では概略だけ伝えましたので、影響がある場合だけ詳しく調べてください。AIに聞くのがいいですよ。Wikipediaなどを見ると、難しすぎて目眩がするでしょうから。