Excel で月数を年と月に変換するには、どうすればよいでしょうか?

Excel のワークシートで、月数を「年と月」の形式に変換しようとしたことはありませんか?たとえば、56 か月を「4 年8 か月」と表示したい場面があります(左側の画像参照)。月数を読みやすい「年と月」形式に変換すれば、期間や勤続年数を報告する際に、より明確でわかりやすくなります。この記事では、Excel でこのタスクを実行するための実用的な方法を紹介し、それぞれのアプローチがどのようなシーンで最も効果的かを解説します。
数式を使用して月数を年と月に変換する
月数を表す数値を、よりわかりやすい「年と月」の形式に変換したい場合は、Excel の数式を使えば効率よく実現できます。この方法は、日常業務や小規模なデータセットでの利用、あるいはコードを使わずに済ませたい場面で特に便利です。数式は動的なので、入力された月数を変更すると、結果も自動的に更新されます。
数式を使って直接月数を年と月に変換するには、次のアプローチが使えます。この方法では、合計月数を12 で割って満年数を求め、その余りを残りの月数とします。
次の数式を空白セルにコピー&ペーストしてください。
この数式を入力したら、Enterキーを押して、年と月への変換結果を表示します。他の行にも同じ数式を適用するには、フィルハンドルをリストに沿って下へドラッグするだけ。これで、すべての値が即座に変換され、一括処理が簡単に実現できます!

ヒントと注意点:
- 月数が12 未満の場合は、「0 年 X か月」と表示されます。
- 負の値や整数でない値は予期しない結果を招く可能性があります。元の値が有効であり、かつ数値として正しく書式設定されていることをご確認ください。
- 入力がない場合に空白を表示するには、IF 関数を使って「0 年0 か月」と表示されないようにできます。
一般的なトラブルシューティング:
- #VALUE! エラーが表示された場合は、参照セルに有効な数値が含まれているかご確認ください。
- 出力形式をカスタマイズしたい場合は、数式内の引用符で囲まれたテキストを必要に応じて調整してください。
この数式を用いた方法は、値が変更される可能性のある動的変換や、プログラミングやマクロに不慣れなユーザーに最適です。ただし、非常に大規模なデータセットを扱う場合や、頻繁かつ繰り返しの変換が必要な場合は、自動化されたアプローチの方が効率的かもしれません。マクロベースの解決策については、以下をご覧ください。
VBA マクロを使用して月数を年と月に変換する
月数のリストを定期的に「年と月」形式に変換する必要がある場合や、非常に大規模なデータセットを扱っている場合は、Excel の VBA マクロ機能を使ってこの作業を自動化すれば、時間を大幅に節約し、手作業によるエラーも減らせます。特に、複数の列を一括処理したいときや、新しいデータに対しても繰り返し使えるワークフローとしてロジックを適用したい場合に、マクロは大きな価値を発揮します。
1。「開発」タブをクリックして、VBA エディターを開きます。開発 > Visual Basic。「開発」タブが表示されていない場合は、「Excel のオプション」>「リボンのユーザー設定」から有効にしてください。エディターが開いたら、挿入 > 標準モジュールをクリックし、表示されるモジュールウィンドウに次のコードをコピー&ペーストしてください。
Sub ConvertMonthsToYearsMonths()
Dim rng As Range
Dim cell As Range
Dim years As Integer
Dim months As Integer
Dim outputCol As Long
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set rng = Application.InputBox("Select the range of months to convert", xTitleId, Selection.Address, Type:=8)
If rng Is Nothing Then Exit Sub
outputCol = rng.Columns(rng.Columns.Count).Column + 1
For Each cell In rng
If IsNumeric(cell.Value) And cell.Value >= 0 Then
years = Int(cell.Value / 12)
months = cell.Value Mod 12
cell.Offset(0, rng.Columns.Count).Value = years & " years and " & months & " months"
Else
cell.Offset(0, rng.Columns.Count).Value = ""
End If
Next
End Sub 2。マクロを実行するには、
「実行」またはF5キーを押してください。すると、変換したい月数の範囲(例:A2:A20)を選択するよう促すダイアログボックスが表示されます。範囲を選択して「OK」をクリックしましょう。
マクロは、選択範囲のすぐ右隣の列に「X 年 Y か月」形式の結果を自動的に入力します。たとえば、A2:A20 を選択すると、結果は B2:B20 に表示されます。
使用上の注意とヒント:
- 選択範囲に月数を表す有効な正の数値が含まれていることをご確認ください。セルが空の場合はゼロとして扱われ、「0 年0 か月」と表示されます。数値以外の値や負の値は、空白またはエラーとして出力される場合があります。
- マクロは、「範囲を選択してください」のすぐ右隣の列に結果を出力します。マクロを実行する前に、その列を確認し、データが上書きされないようご注意ください。
- このマクロは複数回実行可能なので、一括処理や新規データの処理に最適です。
- VBA による操作は元に戻す(Ctrl+Z)ことができません。マクロを実行する前に、必ず重要なデータのバックアップを取ってください。
- データに負の値や小数の月数が含まれている場合、これらは空白として扱われます(VBA の条件を参照してください。必要に応じて修正をお願いします)。
この VBA アプローチは、繰り返し変換が必要な方、大量の行を一括処理したい方、または生産性タスクの自動化を検討している方に最適です。ワンクリックでデータセット全体を瞬時に変換し、ワークフローをスムーズに合理化できます。ただし、VBA を初めてご利用になる場合はマクロを有効にしておく必要があり、環境によってはマクロが制限されている場合がありますので、その際は IT 管理者にご相談ください。
トラブルシューティング:
- マクロ実行時にエラーが発生した場合は、開発タブが有効になっていることと、Excel の設定でマクロが許可されていることをご確認ください。
- マクロの実行結果が既存のデータを上書きする場合は、事前にデータの隣接列が空であることをご確認ください。
- 誤って間違った範囲を選択してしまった場合は、再度マクロを実行し、正しい範囲を選び直してください。
まとめると、数式と VBA のどちらの方法も、月数を読みやすい「年と月」形式に変換する作業をシンプルかつ効率的に実現します。データセットのサイズやワークフローの好みに応じて、最適な方法をお選びください。さらに自動化を進めたい場合は、VBA コードを特別な書式や出力ニーズに合わせてカスタマイズすることも可能です。
関連記事:
- Excel で月と年のみに基づいて2 つの日付を比較する
- 2 つの日付リストがあり、日付を「日」を無視して「月」と「年」のみで比較し、同じ月と年であれば「True」、そうでなければ「False」と表示したい場合(下記スクリーンショット参照)、Excel でどのようにすれば実現できますか?
- Excel で月と年に基づいて値を集計する
- データ範囲があり、列 A にいくつかの日付、列 B に注文数が含まれているとします。このとき、別の列で月と年を指定し、その条件に基づいて注文数を集計する必要があります。たとえば、2016 年1 月の注文総数を計算して、次のような結果を得たいとします。本記事では、Excel でこのタスクを効率よくこなすためのいくつかのテクニックをご紹介します。
- Excel で1~12 を月名に変換する
- たとえば、月が数字で表示された売上表を受け取り、それを下のスクリーンショットのように通常の月名に変換する必要があるとします。何か良いアイデアはありますか?この記事では、そのための2 つの解決策をご紹介します。
- Excel で月または年の残り日数を計算する
- 特定のケースでは、ある月または年の残り日数を知りたいことがあります。たとえば、今日が2014 年10 月12 日だとすると、この月(10 月)やこの年(2014 年)にあと何日あるかを計算したい場合があります。つまり、今月はあと19 日、今年はあと80 日あるということです。詳しくは、以下の記事をご覧ください。
- Google Sheets で日付に年数・月数・日数を加算する
- この記事では、Google Sheets で日付に年数、月数、または日数を加算する方法をご紹介します。
最高のオフィス生産性ツール
Kutools for Excel は、あなたの課題のほとんどを解決し、生産性を80% 向上させます
- スーパー数式バー(複数行のテキストや数式を簡単に編集可能);リーディングレイアウト(多数のセルを簡単に読み書き可能);フィルタリング範囲に貼り付け…
- 結合セル/行/列とデータ保持;セルの分割コンテンツ;重複行を結合して合計/平均を計算…重複の入力を防止セル;範囲を比較…
- 重複または一意の行を選択;空白行を選択(すべてのセルが空);スーパー検索とあいまい検索多数のワークブック内で実行;ランダム選択…
- 正確にコピー複数セルを数式参照を変更せずに移動;複数シートへの参照を自動作成;箇条書きの挿入、チェックボックスなど…
- お気に入りの数式を保存して素早く挿入、範囲、チャート、画像;セルの暗号化パスワード付きで保護;メーリングリストの作成メール送信など…
- テキストの抽出、テキストの追加、特定の位置の文字を削除、スペースを削除;データページ統計を作成・印刷;セルの内容とコメントを相互変換…
- スーパーフィルター(フィルタースキームを保存し、他のシートに適用可能);高度なソート月/週/日、頻度などでグループ化;特殊フィルタ太字、イタリック体などで強調表示…
- ワークブックとワークシートを統合;テーブルのマージをキーカラムに基づいてマージ;データの分割を複数のシートに分割;xls、xlsx、PDF を一括変換…
- PivotTable を以下でグループ化:週番号、曜日など…ロック解除済みセルと選択範囲をロックを異なる色で表示;数式/名前を持つセルをハイライト表示…

- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効化。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 生産性が50%向上し、毎日数百回のマウスクリックを削減できます!
