Excel関数で年月を連続表示する方法

このQ&Aのポイント
  • Excelの関数を使って、年月を連続で表示する方法について説明します。
  • 借入金の支払予定表を作成する際、借入実行月や返済回数を入力した時点で金利と元金の返済予定を数十ヶ月にわたり表示させたい場合、以下のExcelの関数を使用することができます。
  • しかし、一部の年月ではエラー表示になることがあります。連続した年月を表示させるためには、別の方法を使用する必要があります。
回答を見る
  • ベストアンサー

エクセルで年月を連続で表示させる関数

エクセルの関数については簡単なものしかわからない者です。 実は、借入金の支払予定表というかシミュレーションをしようと思いその表を作成しているのですが、借入実行月や返済回数等を入力した時点で金利と元金の返済予定を数十ヵ月にわたり表示させたいのです。 調べたところ「=DATE(YEAR(A1),MONTH(A1)+1,DAY(A1))」という計算式で表示できることがわかりました。 ところが確かに今年については  2013/10  2013/11  2013/12 と表示されるのですが、年が変わると  #NUM! #NUM! : とエラー表示になってしまいます。 これがきちんと 2014/01、2014/02..2020/01...と連続した年月が表示されるようにできないものでしょうか? ご指導よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.12

こんばんは! 横からお邪魔します。 すでに色々な方から回答されていますが、どれもちゃんと表示されると思います。 しかし、お礼欄を拝見すると解決していないようなので・・・ 別案です。 仮にA1セル以降に表示させるとします。 A列すべてを範囲指定 → 右クリック → セルの書式設定 → 表示形式 → ユーザー定義 → G/標準 となっているところを消して yyyy/mm と入力しOK A1セルに 2013/1 と入力しておきます。 A2セルに =EDATE(A1,1) という数式を入れオートフィルでずぃ~~~!っと下へコピーしてみてください。 ※ Excel2003までのバージョンの場合、EDATE関数を使用するにあたり メニュー → ツール → アドイン → 「分析ツール」にチェックを入れておく必要があります。m(_ _)m

mr-gooqoo7
質問者

お礼

直りました! 今日ここまでの苦労は何だったんだろうと思えるほど、スッキリとしました。 本当にありがとうございます。 そして長い時間、ご親切にお答えくださった皆様に改めてお礼申し上げます。m(_;_)m

その他の回答 (11)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.11

下記の関数式でエラーになる原因は計算途中で「13月」と出る部分があり厳密にはエラーです。 =DATE(YEAR(A1),MONTH(A1)+1,DAY(A1)) 貼付図はExcel 2002での2013年13月1日となる途中経過です。 計算結果はシリアル値が41640となっているのでエラーにはならず2014年1月1日になります。 Excelのオプション設定によってはエラーになるでしょう。

mr-gooqoo7
質問者

お礼

No..10と併せ、重ねてお礼申し上げます。 「文字列」という言葉は不適切だったかもしれません。ただ数式じゃなかったし、A1値を変えても以下の表示が変らなかったのでこのような表現を遣いました。 結局、私の理解不足で上手く行きませんでした。ゴメンナサイ。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.10

>確かにオートフィルを使えば何十カ月でもきれいに並んでくれるのですが、文字列としてコピーされますよね。 文字列ではないですよ。 期間の計算ができるシリアル値です。 表示形式が年/月の表現になっていますが表示形式を「標準」にすると2013/10は41548です。 1=1900/1/1 で、1日は整数の1になり1900/1/1+41547日=2013/10/1と言う計算です。 >考えすぎでしょうか? 見た目だけで文字列と判断しただけの誤解です。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.9

>ですが、年が変るとエラー表示になる現象は解消されません... この部分はオプションの詳細設定から「計算方式を変更する」のチェックを外してください。

mr-gooqoo7
質問者

お礼

度々の回答ありがとうございます。 確かに直りました!が、逆に他のところの式がエラー表示になってしまいました。 でも皆さんのおかげでどうにか解決しました。ありがとうございました!

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.8

ちょっと横入りさせていただきますね。 私が気になったのは > 例えばセルの書式設定を「yyyy/mm」にした状態で「2013/08」と入力すると > 「1900/09」と表示されるため という補足の部分なんですが・・・ なるほど、再現できました。 「=2013/08」と入力したりしていませんか? 2013÷8=251.625 ですから、これを日付に直すと「1900/9/7 15:00」です。 これを「yyyy/mm」で表示してやると、「1900/09」ですからね。 つまり、「入力の仕方がちょっとおかしかったかもしれない」ですね。 という具合に、“原因”を探って、知っておくのも重要ですよ。 “解決策”だけ知っても、どのような時にどんな策なのかわからないと意味がないです。 さてさて、落ち着いて“最初から”手順通り、やり直してみましょう。 まず、A1セルに「表示形式:yyyy/mm」を設定し、 そのうえで「2013/8/14」(かな?シリアルで「41500」らしいですので)と入力。 イコール「=」も要りませんし、引用符「””」で囲う必要もありません。 ワークシート上で「2013/08」と表示されているのを確認しましょう。 翌月分はA2セルから下に羅列、と仮定して、 A2セルに式「=DATE(YEAR(A1),MONTH(A1)+1,DAY(A1))」を入力しましょう。 「2013/9/14」が正しく表示されているのを確認し、 ここにも「表示形式:yyyy/mm」を設定してやりましょう。 以下のセルには、“A2セルだけを選択した状態で”フィルしてやります。 これできっと思惑通りの表示をしてくれると思いますよ。 ※表示形式を整えるのは「最後の仕事」と思いましょう。  途中で「結果があっているかわからない式・値」に対して表示形式を設定すると  合っているかどうかすらわからずに絶対に混乱しますから。  「式の結果が思惑通りなのを確認してから表示形式を設定する」ほうが確実ですよ。

mr-gooqoo7
質問者

お礼

ご丁寧な解説ありがとうございます。 自分では「=」を付けずに入力してもEnterを押すことで「=」が付いた状態になっていました。 でもこの現象はNo.6さんのご指導で解決しました。 そのほかは、何度皆さんからご指導をいただいたようにやり直しても、年代わりで化けちゃうんです。 同じブックの中の別シートでは、数式をフィルするだけできれいに何十ヵ月でも表示されるんですけどね..

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.7

例えばA1セルに2013/10/1と入力します。 A1セルを下へオートフィルで数行コピーすると日単位でコピーされます。 オートフィルのマークをクリックするとメニューから連続コピー月単位が選べます。 既にコピーされたセルは月間隔に変化していますので更に下方へ必要なだけコピーすれば目的通りになります。 コピーが終わったら選ばれた状態のままでセルの書式を決めてください。 表示形式はユーザー定義でyyyy"/"mmとすれば希望通りになります。 関数を使う必要はありません。 A列の値はシリアル値で計算対象にできますのでローンの返済計画の試算表に使えます。

mr-gooqoo7
質問者

お礼

ご丁寧な回答ありがとうございます。 確かにオートフィルを使えば何十カ月でもきれいに並んでくれるのですが、文字列としてコピーされますよね。 ですが融資の実行月を変えることで以下の返済月も変わるようにしたいので、関数が必要だと思うのですが..考えすぎでしょうか?

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.6

>確かに別シートで試すとご教示のようになり日付を変えてもちゃんとなるのですが、なぜか作業中のシートにその部分をコピーして日付を変えると1905/〇..と日付が遡ってしまい上手く行きません。 この原因はエクセルのオプションの設定によるものです。 すなわち、Alt+T,Oのショートカット操作でエクセルのオプション画面を出し、エクセル2007以降なら、「詳細設定」の一番下の「式入力を変更する」のチェックを外してください。 #Officeソフトはバージョンによって使用できる機能や操作方法が大きく異なりますので、ご質問の際には必ずバージョンを明記するようにしましょう。

mr-gooqoo7
質問者

お礼

ご回答ありがとうございます。 ご指摘の通り、式入力変更で日付入力ができました! ですが、年が変るとエラー表示になる現象は解消されません...

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

回答No3です。 例えばA1セルに2013年10月と入力することで数式バー上では2013/10/1のように表示されていることでしょう。 例えばA3セルから下方に2013年10月から連続した年月を表示させるのでしたら次の式をA3セルに入力して下方にドラッグコピーすればよいでしょう。 =TEXT(DATE(YEAR(A$1),MONTH(A$1)+ROW(A1)-1,1),"yyyy/mm")

mr-gooqoo7
質問者

お礼

度々のご回答ありがとうございます。 ご教示いただいた数式を張り付けて試してみましたが、やはり年代わりで#NUM!が出てしまいます。 参りました..

  • chonami
  • ベストアンサー率43% (448/1036)
回答No.4

数式でなくても、A1を選択し下にフィルコピー→オートフィルオプションで「連続データ(月単位)」を選べば月だけ増えた日付データになりますので表示形式をお好みに変えてみては如何でしょうか? まぁ、エラーが出ているみたいですし、A1がシリアル値だったらの話ですが。

mr-gooqoo7
質問者

お礼

ご回答ありがとうございます。 下の皆さんへのお礼の通りなのですが、シリアル値だから上手く行かないのでしょうか? とすると、べた打ちで日付が打てない要因を解消しなければいけないということでしょうか? お助け下さい。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

例えばA1セルに2013/10と入力して下方に2013/11・・と並べるのでしたらA2セルには2013/11と入力してからA1セルとA2セルを選択して右クリックし、「セルの書式設定」の「表示形式」で「ユーザー定義」を選び種類の窓には yyyy/mm と入力してOKします。 その後にA1セルとA2セルを選択してから下方にドラッグコピーすればよいでしょう。

mr-gooqoo7
質問者

お礼

ご回答ありがとうございます。 確かに別シートで試すとご教示のようになり日付を変えてもちゃんとなるのですが、なぜか作業中のシートにその部分をコピーして日付を変えると1905/〇..と日付が遡ってしまい上手く行きません。 それに頭の日付はシミュレーションしたいのでコピーではなく関数で行きたいのです。 お助け下さい。

  • LHS07
  • ベストアンサー率22% (510/2221)
回答No.2

右クリックしてセルの書式設定をいろいろ変えてみては

mr-gooqoo7
質問者

お礼

ご指導ありがとうございます。 いろいろ試しているのですが、上手く行かないのです。 どこかに問題があるのでしょうね。

関連するQ&A

  • Excel VBAで「date」関数を使いたい

    VBAを使用して年月日を入力してます。 セルに表示だけなら Year & "/" & Month… とかでもいいんですが、その日付で計算を行いたいんです。 何日足す、とか。。 それでExcelで使える Date(Year,Month,Day) を思い出したんですが、VBAではエラーになってしまいました。 Application.WorksheetFunction.Date(Year, Month, Day) や Application.Date(Year, Month, Day) もダメでした。 どのようにしたら入力した日付で計算が行えるでしょうか?

  • エクセル関数について質問です。

    はじめて投稿します。 エクセルで今日から半年後-1日(と今日から一年-1日)の表示が出来るようにしたいのですが、 どのようにしたら出来ますか? =DATE(YEAR(A1),MONTH(A1)+6-1,DAY(A1-1)) 上記で入力したみましたが、2011/06/01から半年-1は 2011/11/30 となってほしいのに 2011/12/01 となってしまいました。 教えてください。よろしくお願いします。

  • エクセルで関数のデータの後に続けて文字を入れたい。

    エクセル初心者です。 例えば、セルに「=DATE(YEAR(A1),MONTH(A1),DAY(A1))」として表示が「H16.1.1」とした時 「H16.1.1から」と「から」を追加させたいのですが 出来ますでしょうか、教えてください。

  • エクセル Ifで、真の場合は前月の年月を表示、偽の場合は"本日"と入力

    エクセル Ifで、真の場合は前月の年月を表示、偽の場合は"本日"と入力したい。 J3セルにDateと入力された状態で、A1セルに、Ifとして、B1セルの値がAAAなのかBBBなのかによって、AAAの場合は、J3を参考にして、前月の年月を表示する。 BBBの場合には、本日と表示したい。 If関数で真の場合の欄に関数式を入れてみたがうまくいかない。 単純に表示するだけなら、 セルに=DATE(YEAR(J3),MONTH(J3)-1,DAY(J3))と入力し、表示形式をユーザ定義の年月表示にすることで、できたが、これに条件式を組み合わせて、真の場合にだけ、上記表示がでるようにしたい。 すみませんが、よろしくおねがいします。

  • Excel関数で年月を表示する方法

    こんにちは。 Excel関数について質問です。 例えば A1 … 2011/11/11 と手入力した時に、 B1 … 2011/11 C1 … 2011/12 D1 … 2012/01 のようにB1~D1が自動で入力させるようにするためには、 どのような関数を使えばよいでしょうか? YEAR、MONTHを使い、年だけ、月だけの表示はできるのですが、 両方を表示させる方法が分かりません。 またIFの使い方もいまいち曖昧で、12月の次が13月になってしまいます。 よろしくお願いします。

  • エクセルの関数で月を加算する関数は?

    エクセルで作った表があります。 A列は回数・B列は翌月を*年*月と表示してあります。 C列には、B列にA回数月列経過した年月を表示したいのですが、どの関数をどう使えばよいのかわかりません。 MONTH関数をどうにかすればよいのでしょうか? 教えてください。

  • Excel ファイル名のあとに年月を付けて保存

    Excel でファイル名のあとに年月(YYMM表示のTEXT)を付けて Sheets.Copy を試みましたら、書き加えられた年月の最初の 0 が外れてしまいます。 ・・・ 0707 と書き加えるつもりが 707 になります。 Sub SCopy() Dim fn As String fn = Format(Range("E20").Value)  Sheets.Copy ActiveWorkbook.SaveAs Filename:="C:\My Documents\FNTest" & fn End Sub "E20"には、毎月中旬以降は翌月表示にする関数 =TEXT(DATE(YEAR(NOW()),MONTH(NOW())+1,DAY(NOW())-10),"YYMM") の返り値が 0707 と表示されています。 これを値のみコピーした 0707 に変えても同じ、'0707 としても同じで、707 としか入りません。 "E20"の書式を「文字」にしても同じです。 参りました。チェックの方法を教えて下さい。よろしくお願いします。

  • エクセル関数で一ヶ月後の日付を求めたい

    =DATE(YEAR(AQ2),MONTH(AQ2)+1,DAY(AQ2)) と入れて一ヶ月後の日付は表示されたのですが空のセルは空で返しなさいが入りません…。 どうしたらよいのでしょうか。

  • Schemeのプログラミング うるう年関連

    Schemeのプログラミング うるう年関連 Schemeで、 「(1)閏年かどうかを判定する関数leap?(number -> boolean)を定義した後、(2)○年○月の日数は何日かを求める関数num-of-days(number number -> number)を定義せよ」 という内容の課題を出されたのですが、(例えば 2009年の7月→31日 2012年の2月→29日) どうもエラーが出て実行できません。 自分は以下のように組みました。 ;;(1)の関数 (define (leap? year) (cond [(= (remainder year 400) 0) #t] [(and (= (remainder year 4) 0)(> (remainder year 100) 0)) #t] [else #f] ) ) ;;(2)の関数 (define (num-of-days year month) (cond [(and (= month 2)(= (leap? year) #t)) 29] [(and (= month 2)(= (leap? year) #f)) 28] [(or (= month 1)(= month 3)(= month 5) (= month 7)(= month 8)(= month 10) (= month 12)) 31] [else 30] ) ) これを例えば (num-of-days 2008 4) や (num-of-days 1995 12) などとして実行すると、それぞれ30,31という正しい値を返してくれるのですが、 (num-of-days 2008 2) や (num-of-days 1995 2) など、閏年・非閏年に関係無く、2月が絡むと =: expects type <number> as 1st argument, given: false; other arguments were: true というエラーを吐いてしまいます。 何度も見直しましたが、どこが間違っているのか見付けきれません…。どなたか間違いを指摘して頂けると幸いです。

  • 最新受診日から次の受診日を表示する関数(再度)

    前回回答をいただきましたが、また問題があったので質問します。 【次のの条件で次回受診期限日を表示する関数を、どなたか教えていただけますか? 65歳までは受診した日から3年ごとに受診。 65歳に到達した日から1年以内に受診、受診日より75歳に到達するまでは3年ごとに受診。 75歳に到達した日から1年以内に受診、受診日より1年ごとに受診。 受診日(A3)は最新受診日を常に打ち込んで更新するものとします。 年齢(A1)は関数で生年月日より、リアルタイムで表示。 以下のセルの並びで考えていますが、効率のよい方法もあれば教えてください。 タイプ1) 年齢(A1) 生年月日(A2) 受診日(A3) 次回受診期限日(A4) または   タイプ2) 年齢(A1) 生年月日(A2) 受診日(A3) 次回受診期限日(A4) 65歳到達日(A6) 75歳到達日(A7)】 という質問をしました。 前回、の回答で 回答1 タイプ2で対応するのがA3に入力する式を省略できる点でベターでしょう。 A1セルには次の式を入力します。 =DATEDIF(A2,TODAY(),"Y") A4セルには次の式を入力します。 =IF(DATE(YEAR(A3)+3,MONTH(A3),DAY(A3))<=A6,DATE(YEAR(A3)+3,MONTH(A3),DAY(A3)),IF(A3<=A6,DATE(YEAR(A6)+1,MONTH(A6),DAY(A6)),IF(DATE(YEAR(A3)+3,MONTH(A3),DAY(A3))<=A7,DATE(YEAR(A3)+3,MONTH(A3),DAY(A3)),IF(A3<=A7,DATE(YEAR(A7)+1,MONTH(A7),DAY(A7)),DATE(YEAR(A3)+1,MONTH(A3),DAY(A3))))))-1 A6セルには次の式を入力します。 =DATE(YEAR(A2)+65,MONTH(A2),DAY(A2)) A1セルを除いてセルの表示形式は日付にします。 A7セルには次の式を入力します。 =DATE(YEAR(A2)+75,MONTH(A2),DAY(A2)) という回答と 回答2 タイプ1 A1=DATEDIF(A2,TODAY(),"y") A2=生年月日 A3=直近の受信日 A4=(LOOKUP(A1,{0,63,64,65,74},{3,2,1,3,1})+YEAR(A3)&"/"&TEXT(A3,"MM/DD"))-1 タイプ2 A1=DATEDIF(A2,TODAY(),"y") A2=生年月日 A3=直近の受信日 A4=(LOOKUP(A1,{0,63,64,65,74},{3,2,1,3,1})+YEAR(A3)&"/"&TEXT(A3,"MM/DD"))-1 A6=DATE(YEAR(A2)+65,MONTH(A2),DAY(A2)) A7=DATE(YEAR(A2)+75,MONTH(A2),DAY(A2)) という回答をいただきましたが、よくみると 生年月日がS21.9.23だとし、近受診日がH21.7.4の場合 回答1 だと 受診期限がH22.7.3 となり 回答2 だと 受診期限がH24.9.22 になります。 実際は、受診して3年後がH24.7.3であり、65歳に到達するのがH23.9.23である為、 H24.9.22が受診期限だと65歳到達から1年以内だが、3年を過ぎてしまいます。 受診期限がH24.7.3となればよいのですが・・・・・ 複雑なので難しいのでしょうか?

専門家に質問してみよう