いきなり答える備忘録

Google Workspace(旧G Suite)・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)日付・時刻と文字列をつなげる

 Googleスプレッドシートで、日付や時刻の値と文字列を連結した文字列を取得する方法についてです。
 TEXT関数を使う方法もありますが、ここではTO_TEXT関数を使う方法を試してみます。

  • TO_TEXT関数を使って日付や時刻と文字列を見たまま連結した文字列を取得することができます。
  • 日付・時刻が入力されたセルの表示形式の変更に伴い、得られる文字列が変化します。

手順

f:id:accs2014:20220411175934p:plain:right:w550

 画像ではB列に日付や時刻が、C列に文字列が入力されています。
 そこでD3セルに次のような式を入力し下方にコピーしています。日付・時刻と文字列を連結した文字列が得られているのがわかります。

 D3セル

=TO_TEXT(B3)&C3

 単純に「=B3&C3」などとすると日付のシリアル値(数値)と文字列の結合になるので「34486発足」といった文字列しか得られません。
 そこでTO_TEXT関数を使い、日付時刻を見た目の通りに文字列に変換したうえで連結しています。
 TEXT関数を使う方法もありますが取得する文字列の形式(「yyyy/m/d」など)を指定する必要があるためTO_TEXT関数の方が簡単です。


f:id:accs2014:20220411175938p:plain:right:w550

 ところでTO_TEXT関数の戻り値は参照先の表示形式の設定の影響を受けます。
 画像はB3セルの表示形式を変更(m/dの形式)したところですが、D3セルの値も変化しています。
 このような変化を避けたい場合はTEXT関数を使って形式を指定するのが適当です。

 最後に備考ですがTO_TEXT(文字列)は文字列をそのまま返すので、上記の式は「=CONCATENATE(ARRAYFORMULA(TO_TEXT(B3:C3)))」とすることもできます。特に日付時刻が入力されているセルが一定でない場合はこちらの方が都合がよいです。