Googleスプレッドシートは書式(表示形式)による和暦表示をサポートしていないので(2019年3月現在)、和暦表示を行う場合は関数で文字列を作らなければなりません。
- 和暦表示するためには関数で文字列を生成する必要があります。
手順
少々実験的になりますが、1つのセル内の式だけ(ただし長い)で明治以降の元号に対応する例を挙げてみます。
B列に記録された日付に基づき、C列およびD列にて2種類の和暦表示をしています。元号は年ではなく日付で区別しています(例:1989/1/7は昭和、1989/1/8は平成)。ただし、シリアル値がマイナスになる1899年12月29日以前の日付はエラーになります。
では具体的な式の内容です。
まずC列です。C3セルに次のような式を入力し、下方にコピーしています。この列では元号がアルファベット1文字に省略されます。
=ARRAYFORMULA(HLOOKUP(B3,{{0,4595,9856,32516,43586};{"M","T","S","H","R"}&YEAR(B3)-{1867,1911,1925,1988,2018}},2))&TEXT(B3,"/m/d")
{0,4595,9856,32516,43586}は、西暦1899年12月30日及び大正から令和の各元号の初日に対応するシリアル値です。要はHLOOKUP関数(第4引数は省略、従ってTRUEと同じ)を用いて元号を特定し、元号の略称と年の数値を決定しています。
なお、ARRAYFORMULA関数を使っていますが、複数のセルを参照してもスピルしません。式を下方にコピーする必要があります。
次にD列です。
D3セルに次のような式を入力し、下方にコピーしています。この列では元号が漢字2文字となりスラッシュの代わりに年・月・日が表示されます。やっていることはC列と同じです。
=ARRAYFORMULA(HLOOKUP(B3,{{0,4595,9856,32516,43586};{"明治","大正","昭和","平成","令和"}&YEAR(B3)-{1867,1911,1925,1988,2018}},2))&TEXT(B3,"年m月d日")
式は長いものの、限られた範囲で使う分にはいいかもしれません。
ただし複数のシートにわたる場合など、広範囲に使用する場合はやはり元号等を別表にしておいてVLOOKUPで拾う方が扱いやすいと思います。