いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)表示形式と文字列関数の使用に関する注意点

 Googleスプレッドシートの文字列関数でセルを参照する場合、特に表示形式の内容によってExcelとは異なる結果になるため注意が必要です。

  • LEN関数やSUBSTITUTE関数、LEFT関数といった文字列関数は、表示形式の設定により付加された文字を含めて評価します。

手順

 B3セルには「1234567」という7桁の数値が入力されています。
 ただしこのセルには表示形式の設定(「#,##0」つまりカンマ込み)がされているので2つのカンマとともに表示されています。



 さて、C3セルに「=LEN(B3)」という式を入力して、B3セル内の値の文字数を数えます。
 Excelの場合は表示形式による文字(カンマ)を数えないので「7」になるように思われますが……



 確定すると「9」になります。つまりカンマ込みで数えています。
 桁数を数えるつもりでこの式を入力すると間違えてしまう、というわけです。



 日付の場合も見た目通りの長さで評価されます。ここからB3セルに表示形式「yyyy/mm/dd」を適用すると月が2桁表示になるので結果的に「10」になります。
 Excelの場合は日付に対応するシリアル値の長さを返すのでこの日付の場合は「5」になります。



 次の画像はSUBSTITUTE関数の例です。
 「=SUBSTITUTE(B3,",","★")」という式により、カンマを「★」に置き換えた文字列が得られています。
 このように、表示形式の設定により表示されている文字を置換対象にすることができます。



 さらにLEFT/RIGHT/MID関数はこのカンマを含めて取得します。



 このように各種の文字列関数はセルの表示形式に沿ってセルを評価(簡単に言えば数式バーの内容ではなくセルの見た目で判断)します。
 なお、例えば表示形式により付加された文字を除いて数値の字数を数えるなら「=LEN(VALUE(B3))」(整数の場合)、「=LEN(TO_PURE_NUMBER(B3))」(小数点と小数桁を含める場合)といった例が考えられます。