【マクロVBA】Year関数で対象・現在の年・西暦を取得・抽出する方法!抽出できない原因と対処法

日時操作

マクロVBAの機能にはYear関数という、日時の年のデータを取得する関数があります。
例えば「2022/8/5」であれば「2022」を出力するといった内容です。

今回はそのYear関数についての使用方法と実際の活用事例について紹介します。
さらには現在の年を出力する方法も説明したいとおもいます。

Year関数を使用する上で抽出・取得できないなど、不具合・エラーの対応についてもまとめてますので
是非参考にしてみてください。

それでは見ていきましょう。




⬛︎こんなことができるようになる!

・対象セル・変数内の日付データから年・西暦を取得することができる
・現在の年・西暦を取得することができる

⬛︎関数の仕組み

変数・出力先=Year(対象となるデータ)

⬛︎Year関数の使用方法

ではここから実際にYear関数の使用方法について紹介します。

・対象セルまたは変数の日付データから年・西暦を取得する

まずは対象セル・変数から年・西暦を取得する方法を見ていきましょう。
見本で下図のようなシートを用意しました。

B3に日時データの「2022/8/1」という日付データが入っています。
こちらをD3に出力してみましょう。

関数の仕組みは以下の通りです。
変数・出力先=Year(対象となるデータ)

ではこちらの構文に当てはめていきたいと思います。
変数・出力先はD3に出力するので「Cells(3, 4) 」となります。

Range(“D3”)」でも構いません。
対象データはB3の日時データを参照するので「B3」ですね。

実際に作成したプログラムはこちらです。

Sub 年の出力()

Cells(3, 4) = Year(Cells(3, 2))

End Sub

では実行してみましょう。
結果はこのようになります。

B3の「2022/8/1」から年・西暦を取得すると「2022」となり
その結果を「D3」に出力することができました

先ほど説明した方法は直接、別のセルに出力する方法でしたが
変数へ格納することも可能です。

ではB3の日時から年・西暦を抜き出し、メッセージボックスで表示させてみましょう。
今回のB3の日付を「2023/3/14」にしてみましょう。

変数は何でも良いのですが変数「N」に格納したいと思います。

プログラムはこのようになります。

Sub 年の出力()

Dim N As Long

N = Year(Cells(3, 2))

MsgBox “対象の年・西暦は” & N & “年です”

End Sub

実行した結果はこちらです。

取得した年・西暦をメッセージボックスで表示することができました。

・現在の年・西暦を取得する

先ほどまではセルに入力してあった日付データから年・西暦を取得しましたが、現在の年・西暦からも取得することができます

使用するのはNowです。
文字通り今という意味を持ちます。

使用方法は簡単で「Year(対象となるデータ)」の対象となるデータを「Now」に変えるだけです。
では見本で現在の年・西暦を変数Nに格納してメッセージボックスで出力してみましょう。

プログラムはこのようになります。

Sub 現在の年の出力()

Dim N As Long

N = Year(Now)

MsgBox “現在の年・西暦は” & N & “年です”

End Sub

実行した結果はこのようになります。

実行した際の年・西暦は2022年なので「2022」をメッセージで表示させることができました。
もちろん、セルへの出力も可能です。

今回はB3に現在の年・西暦を出力してみましょう。
プログラムはこのようになります。

Sub 現在の年をセルに出力()

Cells(3, 2) = Year(Now)

End Sub

実行した結果はこのようになります。

B3に「2022」が出力されました。
使用方法はシンプルなのでぜひ活用してみてください。

⬛︎年・西暦のデータを取得できないときの対処法とよくあるエラーについて

・年・西暦データを取得できない

こちらは変数名にYearを使用していないか確認してみてください。
私自身も変数名は誰でもわかるように英語に直訳した単語を変数として使用してました。
なのでYear関数を知る前までは年・西暦データを「Year」という変数に格納していました。

しかしこれでは関数と変数が重複してしまい、機能しなくなります。

実際にプログラムを用意しました。

Sub エラーの出る現在の年の出力()

Dim Year

Year = Year(Now)

MsgBox “現在の年・西暦は” & N & “年です”

End Sub

現在の年・西暦を「Year」という変数に格納するプログラムですが
実行するとエラーになります。

つまり変数名を「Yeardata」など「Year」にならないようにしてみてください。

・適切な結果が出力されない

こちらは変数に年・西暦を格納する際に
変数の形式がDateになっている可能性があります。

日時データで「Date」の変数の形式を指定するのは正解ですが
Year関数での出力結果は数値なので「Date」では日時データに変換されてしまいます。

なので「Long」などの整数形式が好ましいです。

⬛︎公式の説明


わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟

Year 関数 (Visual Basic for Applications) | Microsoft Docs

⬛︎まとめ

いかがだったでしょうか。
日時データと合わせて管理している場合などに
Year関数で年・西暦を出力したり、絞り込みをおこなったり用途は様々です。

是非活用して年・西暦を取得してみてください

 

日時データから年月日または時分秒を取得する方法を下記リンクでまとめています。

【マクロVBA】日時データ系総まとめ!年月日時分秒を対象セルや変数、現在値から取得・抽出・出力する ► 独学エクセル塾 (dokugakuexcel.com)

それでは次回の記事でお会いしましょう。

コメント

  1. […] 【マクロVBA㊳】Year関数で日付の年・西暦を取得・抽出する方法と、抽出できない原因と対処法 ► 独学エクセル塾 (dokugakuexcel.com) […]