いきなり答える備忘録

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

(Gスプレッドシート)TEXT関数で日付から曜日を取得する

 GoogleスプレッドシートのTEXT関数を使って、日付から曜日の文字列を取得する方法についてです。

  • TEXT関数の第2引数で「"ddd"」を指定すれば、日付から1文字の曜日(日,月,火…)を取得できます。
  • 同じく「"dddd"」を指定すれば3文字の曜日(日曜日,月曜日,火曜日…)を取得できます。
  • 英語の曜日名は取得できませんので、別の方法を考える必要があります。

手順

 ExcelだとTEXT関数の第2引数として「"aaa"」や「"aaaa"」を指定したときにそれぞれ日本語1文字、日本語3文字の曜日名を取得できますが、Googleスプレッドシートの場合はうまくいきません。
 「"ddd"」を指定したときに日本語1字、「"dddd"」を指定したときに日本語3字の曜日名を取得できます。

 C5,C6セル(それぞれ日本語1文字、日本語3文字の曜日名を取得する例)

=TEXT(B4,"ddd")
=TEXT(B5,"dddd")

 英語の曜日名を取得することはできません。日付の和暦対応はしていないのに、曜日は日本語しか取得できないというのが残念です。


 TEXT関数を使ってムリヤリ英語名を取得するならGoogleスプレッドシートの対応言語を変更するという方法もありますが、さらにムリヤリな方法としてGOOGLETRANSLATE関数で翻訳する方法が考えられます。

 C3,C4セル

=LEFT(GOOGLETRANSLATE(TEXT(B3,"dddd"),"ja","en"),3)
=GOOGLETRANSLATE(TEXT(B4,"dddd"),"ja","en")

 ただし再計算が遅すぎることもあってお勧めしません


 そこで本題からは外れますが、英語名を取得するオーソドックスな方法を2例紹介します。

 C3,C4セル

=CHOOSE(WEEKDAY(B3),"Sun","Mon","Tue","Wed","Thu","Fri","Sat")
=INDEX({"Sun","Mon","Tues","Wednes","Thurs","Fri","Satur"}&"day",WEEKDAY(B4))

 やり方はいろいろ考えられますが、ここではWEEKEND関数の戻り値(1=日曜,2=月曜……)を利用しています。