Accessでデータを管理していると、和暦情報をテキスト型で蓄積しているケースに出くわすことがあります。本来であれば、日付/時刻型で処理をすることでAccessの持つ機能をいかんなく活用することができますが、テキスト型の場合にはこれら機能を活用できずデータ処理に苦労することになります。
そこで今回は、和暦情報をテキスト型で保持している場合に、西暦として日付/時刻型に変換する方法を紹介します。
日付/時刻型の場合「月日」の情報も持たせる必要があるため、ここでは例えば2021年度の場合は2021年4月1日としてデータを持たせることとします。
なお、西暦から和暦に変換する方法は以下の記事で紹介していますので、そちらをご参照ください。
サンプルデータについて
今回は、「T_和暦to西暦」テーブルを作成し、ここに「ID」及び「年度」フィールドを作成します。そしてそれぞれのデータ型を「オートナンバー型」と「短いテキスト」にします。
続いて、作成した「T_和暦to西暦」テーブルに表1で示すサンプルデータを格納していきます。
表1 サンプルデータ
ID | 年度 |
1 | 昭和60年度 |
2 | 昭和61年度 |
3 | 平成2年度 |
4 | 平成5年度 |
5 | 平成12年度 |
6 | 令和2年度 |
7 | 令和3年度 |
さて、表1のようにサンプルデータを格納しましたが、ポイントとしては次のことが挙げられます。
・年度フィールドの値に「短いテキスト」のデータ型が保持されているという点
・年度を表す数字が1桁であったり2桁であったりするという点
これらのことがデータベース構築におけるデータ処理を複雑にする要因になるのですが、現場では良く見かける事例でもありますので、今回は敢えてこのようなサンプルデータを用意し、どのように処理していけば良いかを見ていただければと思います。
和暦から西暦への変換方法
ここまででサンプルデータの準備ができましたので、和暦から西暦への変換方法を見ていきましょう。
まず、「昭和」を西暦に変換する場合、対象年に「1925」を足すことで実現できます。
例えば、昭和60年度は1985年度になりますが、昭和の「60」に「1925」を足すことで「1985」を得ることができます。
同様に、「平成」の場合であれば対象年に「1988」を、「令和」の場合であれば対象年に「2018」を足すことでこれを実現することができます。
次に、「年度」フィールドに保持されているデータは、元号の2文字と「年度」の2文字が必ず含まれますが、年度の数字は1桁であったり2桁であったりします。したがって、「年度」の値を取得するには次の数式を用いることで実現できます。
Cint(Mid([年度], 3, Len([年度])-4))
この式を一つずつ見ていきましょう。まず、Len([年度])で「年度」フィールドに格納されている値の文字数を取得します。
例えば、「昭和50年度」であれば文字数は6文字(数字の桁数は2桁)になりますし、「平成3年度」であれば文字数は5文字(数字の桁数は1桁)となります。ここから、4文字分を引くと数字の桁数に一致することが分かります。
続いて、Mid関数を用いて、元号の2文字を飛ばした3文字目、すなわち年度の数字から桁数分の文字数を取得しています。「昭和50年度」であれば、「昭和」の2文字を飛ばした「5」から取得をし先の内容どおり桁数2桁分として「50」を取得することになります。
そして、Cint関数により文字列を数値型にキャストします。
以上が、基本的なデータの処理プロセスになりますが、元号により処理の条件分岐が必要となりますので、IIf関数を活用していきます。
IIf関数の使い方については、以下の記事をご参照ください。
今回のケースでIIf関数を用いて、先の西暦処理を合わせこむと次のような形で処理を表現することができます。なお、条件に合わない値が「年度」フィールドに格納されていた場合は、「9999」として返すようにしています。
IIf(Left([年度],2)=”昭和”,CInt(Mid([年度],3,Len([年度])-4))+1925,IIf(Left([年度],2)=”平成”,CInt(Mid([年度],3,Len([年度])-4))+1988,IIf(Left([年度],2)=”令和”,CInt(Mid([年度],3,Len([年度])-4))+2018,9999)))
ここでは、IIf関数を入れ子にして複数の条件分岐をしています。まず、昭和の場合の処理、続いて、平成の処理、最後に令和の場合の処理をし、いずれにも該当しなかった場合に「9999」を返すようにしています。
これを踏まえて、和暦から西暦へ変換するためのクエリを作成します。
具体的には図1に示すように【フィールド】項目に、上述の関数を記載してください。
図1のように実装ができた後データシートビューで変換結果を確認してみましょう。
結果は図2のようになります。
まとめ
今回は、和暦から西暦にデータ変換するための処理方法について紹介をしました。紹介した内容は一例に過ぎませんが、一つデータ処理の方法をクエリなどで実装しておけば、データベースの強みを生かして簡単にデータ処理をすることができますので、業務効率の改善も視野に取り入れてみてはいかがでしょうか。
今の時代、VBAに限らずプログラミングができるということは、当然のスキルとして広く社会で認知されています。いまだプログラミングが十分にできないという人は、今からでも遅くありません。できるだけ早く基本的なプログラミングスキルを習得することをお勧めします。
ご自身にあった専門書を参考に、実践的なプログラミング・データベース・サーバ、データ分析・機械学習など、システムエンジニアや今後を担うDX人材に必要とされているスキル獲得に向けて基礎から学んでいくことが大切です。
最初につまずきがちな点も、書籍を読みながら試行錯誤して課題解決していくことで、自身のスキルアップを目指すことができます。思い立ったが吉日、是非業務効率の改善に向けてプログラミング学習に勤しんでください!
スポンサーリンク
コメント