【表計算ソフト】Google SpreadSheetsの関数を使って和暦を西暦に変換する。【令和】

こんにちは、書川(かきかわ)です。

学校でも、アパレルブランドで働いていた時でも、表計算ソフトといえば「エクセル」でした。

それしか知る事のない環境で生きてきたんです。去年の2018年の春までITに関しての知識が3歳でした。

前提として、エクセルでは「セルの書式設定」により一発で「和暦⇆西暦変換」を出来るようになっています。

最新のバージョンでは令和の変換にも対応しているという情報もありますが定かではありません。

Calendar conversion of Excel
エクセルのセルの書式設定

この記事の結論です。

SpreadSheetsで和暦を西暦に変換するには3つの関数を使うだけです。

以下の関数の組合せを使うことで、簡単に和暦を西暦に変換できてみんなのヒーローでになれます。

  • IF関数
  • REGEXMATCH関数
  • REGEXEXTRACT関数

SpreadSheetsのA列1行目セルに和暦を入力しており、B列1行目セルに以下の関数を入力しています。
このままでは、令和を変換は出来ない状態にしています。

非エンジニアでも問題なく使いこなせるように解説していきます。

IF関数を使えるようになると、出来ることの幅が格段に広がります。

IF関数というのは、ある条件によって処理を分岐する関数です。

Google support = https://support.google.com/google-ads/answer/7207341?hl=ja

例えば、バナナはおやつかどうかで、遠足に持っていけるおやつの量に影響が出てくる大事な場面に遭遇したとする。

その時の条件分岐を説明すると、

  • バナナはおやつかどうかを判断する。
  • YES→僕はおやつをもう買えない。
  • NO→僕は他のおやつを買いに行く。

このようにIF関数を使うことで、条件によって次の行動を指示することが出来る。

IF関数の書き方を知って、論理式で判別しましょう。

IF(論理式,Trueの場合,Falseの場合)

なので、バナナはおやつかどうかの論理式に置き換えると

IF(バナナ=おやつ, 僕はおやつをもう買えない, 僕は他のおやつを買いに行く)

という書き方になります。

ネスト(入れ子)を使った式にすると、以下のように少し複雑なる。

IF(論理式1,Trueの場合1,IF(論理式2,Trueの場合2,Falseの場合2))

この場合、論理式1がFalseの場合、次の条件分岐の論理式2で判別することになります。

探したい文字を見つけたい時は、正規表現の関数を使う。

IF関数以外の2つの関数は、正規表現の関数です。

記号を使って文字列を表現する方法なので、初めのうちは理解が難しいと思いますが、正規表現がある事を知っているだけでも大きな武器になる。

REGEXMATCH関数は文字列の中を検索出来る。

見つかればTrue、見つからなければFalseを返してくれるとてもシンプルなものです。

関数の書き方は以下の通りです。

REGEXMATCH(“ランダムな文字列”,”検索したい文字”)

使用例は以下の通り。

  • REGEXMATCH(“平成31”,”平成”)と書かれていた場合、Trueを返す。
  • REGEXMATCH(“平成31”,”昭和”)と書かれていた場合、Falseを返す。

REGEXEXTRACT関数は、検索した文字列を抜き出せる。

REGEXMATCHと似ていて性格もほぼ同じ。

唯一の違う点は、探している文字が見つかったらそれを抜き出してくれる点。

関数の書き方は以下の通り。

REGEXEXTRACT(“ランダムな文字列”,”検索したい文字”)

使用例は以下の通り。

  • REGEXMATCH(“平成31”,”[0-9]+”)と書かれていた場合、31を返す。
    [0-9] と + は正規表現と呼ばれるもので、特に暗記する必要はない。
  • [0-9] : マッチする文字の範囲を指定する表現をしており、この場合は0から9の中で当てはまるものがTrueであり、抜き出される。
  • + : 直前の文字列のパターンの一回以上の繰り返しにマッチする。

3つの関数を組み合わせると、和暦を西暦に変換できる。

昭和を西暦に変換することが出来る関数の組み合わせ。

Convert the Showa era
昭和だけ変換する関数
=IF(REGEXMATCH(A1,"昭和"),
REGEXEXTRACT(A1,"[0-9]+")+1925,
"一致なし")

昭和元年 (1年)は西暦では1926年という事と、昭和0年というものは存在しないため、和暦の数え年に1926-1を足す事で、昭和を西暦で表示する事が出来る。

平成を西暦に変換することが出来る関数の組み合わせ。

Convert the Heisei era
平成だけ変換する関数
=IF(REGEXMATCH(A1,"平成"),
REGEXEXTRACT(A1,"[0-9]+")+1988,
"一致なし")

昭和と同様に平成1年は1889年だから、1889-1=1880を和暦の数え年に足す事で平成を西暦で表示する事が出来る。

このまま関数の組み合わせがバラバラだと、1つのセルの中で1つの元号でしか西暦に変換できないから不便。

そうならない為に、一致しない場合にさらに条件分岐をするように書き換える。

Function to convert era
昭和ではない場合、平成を西暦に変換する。
=IF(REGEXMATCH(A1,"昭和"),
REGEXEXTRACT(A1,"[0-9]+")+1925,
IF(REGEXMATCH(A1,"平成"),
REGEXEXTRACT(A1,"[0-9]+")+1988,
"一致なし")
)

昭和のFalseの部分に、平成を西暦に変換する関数を入れ子にする。

これは、REGEXMATCHで昭和という文字列が検索に当たらなければ、平成という文字があるかを検索する条件分岐に行くという指示をしている。

令和を判別する時や、昭和より以前の和暦を含める時にも同じ様なコードを活かすことで変換が出来る。

GASを使いこなすことで、自分の分身を作れる。

毎日の作業の中には生産性のない退屈なものも有るけれど、その作業を自動化できたらどうでしょうか。

気にならない程少ない時間の浪費でも、積み上がれば相当な時間を失っていることになるんですよね。

自分の時間と力だけを使って努力するのは簡単だけど、最初に自動化することに時間と力を投資し、システムを作ってしまえば、その先はもっと他のことに自分の時間や力を使えるようになる。

自動化は、自分のクローンを作ること以上の価値があると思っている。