TEXT関数を使って表示

毎度忘れてしまうのでメモ。Excelではユーザー定義書式記号で「aaaa」を使いますが、GoogleスプレッドシートではTEXT関数を用いて第二引数に「d」を使って表示します。

A1に「2018/1/9」と入力されている場合

=TEXT(A1, "d")     // 「9」と表示されます(日)
=TEXT(A1, "dd")    // 「09」と表示されます(日:2桁ゼロパディング)
=TEXT(A1, "ddd")   // 「火」と表示されます(曜日:略)
=TEXT(A1, "dddd")  // 「火曜日」と表示されます(曜日)

「d」が3つ以上で曜日表示になります。フォーマットが準備されているのでとても簡単。

曜日の表示を英語表記にしたい

曜日の英語表記について。上記TEXT関数を使用している状態で、メニューの「ファイル」→「スプレッドシートの設定」から「言語と地域」で日本からアメリカ合衆国などの英語圏に設定すれば良いのですが、通貨の表記なども変わってしまうので影響範囲が大きい。曜日だけに限定したい場合、TEXT関数では対応できないので別の関数を用います。

WEEKDAY関数で曜日を英語表記

WEEKDAY関数で曜日の番号を取得して、それに応じた文字列を表示するようにします。以下、例。

WEEKDAY関数とLOOKUP関数で曜日表示

画像に表示されている数式は、E1セルの数式です。流れは以下の通り。

  1. A1〜A7セルに1番から7番までの連番を設定(LOOKUP関数のキー値になる)
  2. A1〜A7セルに曜日の文字列を日曜日から入力
  3. D列に曜日対象の日付を入力
  4. E1セルに数式設定「=LOOKUP(WEEKDAY(D1,1),A$1:A$7,B$1:B$7)
  5. E1セルのフィルハンドルを垂直方向に引っ張って完成!\(^o^)/

よくIF文で頑張ってIF(WEEKDAY(D1,1)=1, "Sunday", IF(WEEKDAY(D1,1)=2, ........とやっているのを見かけるのですが、数式が長いとしんどい……。

あと、「Sunday」を「Sun」にしたい!と思った時に全部のセルを書き換えるのもこれまたしんどい。LOOKUP関数で検索する方法にしておけば、B列の値を変えるだけど良くなるのでとてもメンテナンス性がよいなと思います。お試しあれ。