生年月日から年齢をイッパツで計算するエクセル関数

コンピューターのお仕事
スポンサーリンク

こんなお悩みをお持ちではないですか?

  • 年齢計算に早見表を使っているが面倒
  • エクセルで年齢計算をしたいが、関数が見つからない
  • 顧客名簿の生年月日からイッパツで年齢を計算したい

エクセルの名簿で生年月日を管理しているのに年齢の計算ができずに早見表を使っている人を見かけましたので、生年月日から年齢を計算するエクセルのユーザー定義関数を作ってみました。

ユーザー定義関数とは自分で作るエクセルの関数のことで、ファイルごとに登録しなければ使えませんが、登録したファイル内なら通常の関数と同じように使えます。

今回は、コピペするだけの簡単な作業で年齢計算のユーザー定義関数が使えるように解説します。

スポンサーリンク

ユーザー定義関数「GetAge」の登録方法

ユーザー定義関数「GetAge」のエクセルファイルへの登録は次のような手順で行います。

  • 新規のエクセルファイルを開く
  • 当サイトの「GetAge」スクリプトをコピー
  • エクセルからVBエディタを開く
  • VBエディタで標準モジュールを開く
  • 標準モジュールに「GetAge」をはりつけ
  • マクロ有効の保存形式で名前を付けて保存

「GetAge」のスクリプトをコピー

下記は「GetAge」を動かすためのプログラム(スクリプト)です。

まずは下記を選択してコピーしてください。

右側にうすく表示されているCopyアイコンをクリックするだけでもコピーできます。

Public Function GetAge(ByVal Birthday As Date, ByVal Hiduke As Date) As Long
    GetAge = DateDiff("yyyy", Birthday, Hiduke) + _
             (Format(Birthday, "mm/dd") > Format(Hiduke, "mm/dd"))
End Function

エクセルからVBエディタを開く

VBエディタとは「エクセルVBA」というプログラムを書くためのツールのことで、当サイトで公開しているスクリプトやユーザー定義関数はこのツールから登録します。

開くにはいくつか方法がありますが、最も簡単な開き方はエクセルが起動した状態でキーボードのAltキーとF11キーを同時に押す方法です。

Nvidiaのグラフィックボードを使っているパソコンではAlt+F11のショートカットが別のアクションに割り振られていてVBエディタが開かない場合があります

その場合は下記の方法でVBエディタを開いてください。

Excel2007,Excel2010以降

Excel2007,Excel2010以降 のバージョンでVBエディタを開くには下記の通りです。

リボンの「開発」→「Visual Basic」

「開発」リボンが見当たらない場合は「ファイル」→「その他」→「オプション」→「リボンのユーザー設定」から「開発」の項目をチェックすれば現れます。

Excel2003

Excel2003のバージョンでVBエディタを開くには下記の通りです。

「ツール」→「マクロ」→「Visual Basic Editor」

標準モジュールを開く

VBエディタが開いたら、次に標準モジュールを開きます。

方法はVBエディタのメニュー「挿入」→「標準 モジュール 」をクリックします。

標準 モジュール に「GetAge」を貼り付け

標準 モジュール が表示されたら、そこに先ほどコピーした「GetAge」のスクリプトを貼り付けます。

マクロが有効な保存形式で名前をつけて保存

エクセルファイルの保存形式は次の4つですが、マクロ(VBA)を保存できるのはxlsmとxlsbの2つですが、特にこだわりがなければより新しいXLM形式のxlsmで保存しましょう。

  • xls (マクロ無効)
  • xlsx (マクロ無効)
  • xlsb (マクロ有効 バイナリ形式)
  • xlsm (マクロ有効 XLM形式)

ユーザー定義関数「GetAge」の使い方

まずはどのようなイメージで「年齢計算のユーザー定義関数」が動作するのかを解説します。

「年齢計算のユーザー定義関数」の関数名を「GetAge」と名付けたのでこれ以降は「年齢計算のユーザー定義関数」 = 「GetAge」と呼ぶことにします。

「GetAge」の書式

GetAge(“生年月日”,”計算したい日付”)

第一引数 “西暦の生年月日”

「GetAge」の第一引数には生年月日を入力します。

例題では生年月日を西暦で入力していますが、和暦記号を使っても動作します。

  • 明治3年9月24日 : “M3-9-24”
  • 大正3年9月24日 : “T3-9-24”
  • 昭和3年9月24日 : “S3-9-24”
  • 平成3年9月24日 : “H3-9-24”

日付の区切り記号に-(ハイフン)を使っていますが /(スラッシュ)で区切ってもかまいません。

日付の両端をダブルクォーテーションでくくるのを忘れないでください。

第2引数”計算したい日付”

第2引数には計算したい日の日付を入力します。ちょっと文章では説明しにくいので例を出して説明します。

例1では2021年10月24日時点で、1975年9月24日の人の誕生日を計算します。

例1.】=GetAge(“1975-9-24″,”2021-10-24”)

例2では第2引数に今日の日付を返す「Today関数」を使用していますので、このセルでは常に今日の時点での年齢を計算します。

例2.】=GetAge(“1975-9-24”,Today())

エクセルの表でユーザー定義関数「GetAge」を実際に使う

「GetAge」の実際の使い方ですが、セルに直接数式を入力します。

下記では、第一引数に生年月日が書かれているセル、第二引数に今日の日付を返すtoday関数を指定しています。

ちなみに生年月日の値が和暦で漢字などを使って表示されていますが、これは書式設定で表示させているだけで、実際は西暦の値が入っています。

注意!「GetAge」は保存したファイル内でしか使えない

ユーザー定義関数はそのスクリプトを保存したファイル内でしか使えません。

複数のファイルでユーザー定義関数「GetAge」を使う場合は、その都度今回紹介した手順で登録が必要です。

まとめ

今回はエクセルの名簿などで管理している生年月日から年齢を一発で計算するユーザー定義関数をエクセルが苦手という人でも使えるように解説しました。

顧客名簿などに「GetAge」関数を登録しておけば、全員分の年齢をイッパツで計算します。

「GetAge」の第2引数にToday()を設定しておけば、いつ確認しても今日時点での年齢が表示されるので、手作業での更新も不要です。

ユーザー定義関数は登録したファイル内でしか使えませんが、今回紹介した方法ならコピペするだけなので、それほど手間はかからないはずです。

もしあなたが年齢計算に早見表を使っているのなら、エクセルのユーザー定義関数「GetAge」を使ってみてはいかがでしょうか?

コメント

タイトルとURLをコピーしました