【GAS】スプレッドシートで元号を西暦に変換

お仕事おつにゃッス🐈

文系未経験から社内SEになった、あっきょ(@daily_code_JP)です!

元号から西暦に変換するのは非常に面倒くさいですよね。

しかし、GASで簡単なプログラミングをすれば自動変換するオリジナル関数を作ることができます

この記事ではコピペOKのコードで解決します。

こんな人におすすめ!

  • 元号から西暦に自動で変換したい
  • SUM関数のように気軽に使えるものが欲しい
  • プログラミングでJavaScriptを学んだけど何を作っていいかわからない

誰でも無料で簡単にできますので気軽に学んでいきましょう!

目次

元号から西暦に変換するイメージ

スプレッドシートで元号から西暦に変換するイメージ

元号から西暦に変換する自作関数をプログラミング。

引数に元号と年を入力するだけで西暦の変換を一瞬で終わらせます

例えば、昭和54年を変換する場合は1979年を出力します。

なので、計算時間の減少とミスの減少につながって作業時間の効率化を図れます。

あっきょ

いちいち計算をする必要がなくなるのでプログラミングすれば楽ッスよ!

元号から西暦に変換するには?

スプレッドシートには西暦を変換する機能はないので自作でコードを作る必要があります。

元号から西暦に変換する方法は簡単な計算で求めることが可能。

計算方法はえいすう総研様の「元号」と「西暦」をパパっと変換!の記事を参考にしました。

明治は1868年に始まりました。この年が明治元年つまり明治1年になります。1869年は明治2年、1870年は明治3年となり、元号と西暦の差は常に「67」となります。したがって明治の場合、元号の数字に67を足せば西暦が求められるし、西暦から67を引けば元号が求められます。

「元号」と「西暦」をパパっと変換! – えいすう総研

例えば明治元年の西暦を求めるなら「67 + 1 = 68」と計算して1868年になります。

この方法を応用してGASで元号から西暦に変更できるコードを作っていきます。

元号から西暦に変換する準備

Google Apps Scriptで元号を西暦に変換する準備を行います。

必要なファイルは1つです。

必要なファイル

  • Google スプレッドシート…リストの作成&サンプルコードの貼り付け

スプレッドシートの作成

この記事では顧客の生まれた年を登録するGoogle スプレッドシートを作成します。

A列には「元号」、B列に「生まれた年」を記入。

C列目には元号から変換した西暦を記入します。

元号から西暦に変換するスプレッドシートの準備の例

スプレッドシートの準備は以上です。

サンプルコードを貼り付ける場所

サンプルコードはGoogle スプレッドシートにコピペ。

上バーの「拡張機能」の中にある「Apps Script」をクリックしてコードを貼り付けます。

Apps Script表示

元号から西暦に変換するサンプルコード

セル内に元号を記入して西暦に変換する関数をGoogle Apps Scriptで作成します。

解説の項目

  • changeYear | 元号から西暦に変換する自作関数
  • サンプルコード
  • A, 計算する元号の数字を定義
  • B, 値が「元」の場合は「1」に変換
  • C, 値と一致する条件があれば西暦に変換

changeYear | 元号から西暦に変換する自作関数

スプレッドシートで元号から西暦に変換するchangeYear関数の説明

この記事で作成する自作関数changeYearの概要。

引数2つ入れてセル内に記入すると自動で西暦に変換します。

例として明治4年の西暦を求める場合はvalueに「明治」、numに「4」を入れると「1871」を出力します。

サンプルコード

右上にあるマークを押すとコードのコピペを一瞬でできます。

また、コード内で文頭にアルファベットが付いているコメントごとに詳細を説明していきます。

function changeYear(value, num){
  //A,計算する元号の数字を定義
  const MEIJI = 1867;
  const TAISHO = 1911;
  const SHOWA = 1925;
  const HEISEI = 1988;
  const REIWA = 2018;

  //B,値が「元」の場合は「1」に変換
  if(num == "元"){ //セル内に元年の「元」が記入されている場合、1に変換
    num = 1;
  }
  
  //C,値と一致する条件があれば西暦に変換
  switch(value){
    case "明治":
      return MEIJI + num;
      break;
    case "大正":
      return TAISHO + num;
      break;
    case "昭和":
      return SHOWA + num;
      break;
    case "平成":
      return HEISEI + num;
      break;
    case "令和":
      return REIWA + num;
      break; 
    default:
      return "この元号は登録されていません。";
  }
  
}

A, 計算する元号の数字を定義

//A,元号の番号を定義
const MEIJI = 1867;
const TAISHO = 1911;
const SHOWA = 1925;
const HEISEI = 1988;
const REIWA = 2018;

明治から令和までの元号を登録します。

元号の番号はあえて元年から1を引いた数を定義しています。

例えば、明治時代の元年は1868年ですがコード上では「1867」です。

これは計算で第二引数の数字を足すためです。

明治元年の計算なら第二引数の1を引用して「1867+1」と計算。

仮に定数MEIJIに「1868」と定義したら、「1868+1」で西暦がズレる原因に。

なので、自作関数を使うときに計算が複雑にならないようにしています

ほかの元号も同様それぞれの元年を西暦にした数字から1を引いたものを基準にします。

あっきょ

関数を使うときを考えてプログラミングするのが基本ッス!

B, 値が「元」の場合は「1」に変換

//B,「元」の場合は「1」に変換
if(num == "元"){ //セル内に元年の「元」が記入されている場合、1に変換
   num = 1;
}

セル内の値が元年の「元」の場合、自動で変数numの値を「1」に変換します。

C, 値と一致する条件があれば西暦に変換

 //C,値と一致する条件があれば西暦に変換
  switch(value){
    case "明治":
      return MEIJI + num;
      break;
    case "大正":
      return TAISHO + num;
      break;
    case "昭和":
      return SHOWA + num;
      break;
    case "平成":
      return HEISEI + num;
      break;
    case "令和":
      return REIWA + num;
      break; 
    default:
      return "この元号は登録されていません。";
  }

switch文を使って条件にあった値があれば、それに合わせた処理を行います。

valueの値が「明治」の場合、定数MEIJと引数のnumを足して西暦を求めます。

もし、登録していない元号の場合はdefault処理します。

コードの説明は以上です。

元号から西暦に変換するテスト

実際に元号を西暦に変換するためにC列に関数を記入します。

関数内の第一引数に「A2」、第二引数に「B2」を記入。

スプレッドシートで元号から西暦に変換するchangeYear関数の使用方法

元号から西暦に変換しました。

昭和54年は1979年なので一致しています。

スプレッドシートで元号から西暦に変換するchangeYear関数の結果

すべての行に関数を記入します。

登録した元号はすべて西暦に変換できています。

11行目の「慶應」のような登録していない元号はエラーメッセージが表示されます。

スプレッドシートで元号から西暦に変換するchangeYear関数の使用例

【便利】GASで日付や時間を操作するコード一覧

この記事ではGASを使って元号を西暦に変換する方法を紹介しました。

GASにはほかにも日付や時間を自動取得する方法があり業務効率化を実現できます

誰でも簡単に無料でできるのでぜひご活用ください。

もちろん、コピペOKです。

おわりに | 業務効率化で市場価値を高めるには

以上、GASでスプレッドシートで元号から西暦に変換する方法でした。

  • 元号から西暦に変換するのは計算できる
  • GASではオリジナル関数のプログラミングで自動化
  • 新しい元号がでても追加すれば永遠に使える

そのままコピペして日常業務で使ったり、プログラミングの練習や動作確認用に使ってみましょう。

事務や営業などの非エンジニアが業務効率化を目指すならプログラミングがおすすめ。

というのも、オリジナルアプリを作ってしまえば1クリックで作業を自動化できるから

残業や作業量を圧倒的に減らすことができます。

業務効率化に特化したGASを効率的に学ぶなら以下の2つの方法が多いです。

  • 参考書やオンライン教材で独学
  • プログラミングスクールを利用

正しく学ぶことで非エンジニアでも実用的な業務効率化のスキルが身に付きます

デイコーでは、GASのサンプルコードからおすすめのプログラミングまで幅広く紹介。

初心者にもわかりやすく解説しています。

あっきょ

プログラミングスクールは82社を分析したッス!

次回の記事もご期待ください!

それでは、よいプログラミングライフを!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

文系未経験のWebエンジニア。事務職がプログラミング学習して社内SE部門立ち上げ&Webサイト作成。業務効率化で残業80%減を達成。得意な言語 : GAS, JavaScript, Python

目次