Results of 1 - 1 of about 470 for EDATE (0.000 sec.)
- [[20110125234208]]
- #score: 9974
- @digest: d377ae4b0adb61e6c5fed7d612ff8fe5
- @id: 52992
- @mdate: 2011-01-28T01:49:17Z
- @size: 9098
- @type: text/plain
- #keywords: 異20 (92987), tmlastdate (42959), akidateadd (42959), 2011 (38262), 月前 (22472), 前[ (14901), 日前 (11411), 同日 (10277), ヶ月 (9659), 2010 (8831), 成23 (8704), 点1 (8100), 起点 (6082), コタ (5086), 理) (5084), edate (4620), 期日 (3511), 日→ (3349), 前1 (2535), day (2433), 存在 (2254), と5 (2228), 平成 (2098), 月25 (1937), が存 (1912), 御座 (1865), 答有 (1747), 月と (1747), の1 (1648), year (1628), month (1599), 月末 (1529)
- 『1ヶ月と5日前を求める』(aki)
何時も拝見させていただいております。宜しくお願い致します。 1ヶ月と5日前の期日を出したいと考えております 色々な投稿を確認させていただき、難しいということが解りました DATEDIF関数を使うというところは、なんとなく解ったのですが これが正しいのかどうかを見ていただきたくお願いに参りました この1ヶ月とは同日の1ヶ月前を示します 平成23年 1月25日 → 平成22年12月25日 平成23年 2月 1日 → 平成23年 1月 1日 です そこで、A1に、期日、B2に以下のような式を考えました これは、合っていますでしょうか? 3年ぐらい確認したところ、間違いは見つけられませんでした [A] [B] 1 2011/1/25 2010/12/20 =DATE(YEAR(A1),MONTH(A1)-1,DAY(A1)-5) 何卒お願い申し上げます。 環境は、WindowsXP Excel2003 です (aki) ---- 月末や月初の扱いをどうしたいのかによると思いますが、3年間を確認して問題ない (期待通りの日付になっている)のであれば、それでよいと思います。 (Mook) ---- こんにちは。 > この1ヶ月とは同日の1ヶ月前を示します Mookさんが書かれていますが、月末(28〜31日)の場合、ご提示の数式では この日付が返らないときがあります。 ↓の3行目以降のように、「同日の1ヶ月前」が存在しない場合、日付がずれますが この結果でよいのでしょうか。 (「5日前」は単純に5を引くだけなので、ちょっと横に置いておきます) [R/C] [A] [B] [1] 起点 1ヶ月前 [2] 2011/1/25 2010/12/25 [3] 2011/5/31 2011/5/1 ←こことか [4] 2011/5/30 2011/4/30 [5] 2011/3/31 2011/3/3 ←こことか [6] 2011/3/30 2011/3/2 ←こことか [7] 2011/3/29 2011/3/1 ←こことか [8] 2011/3/28 2011/2/28 B2 =DATE(YEAR(A2),MONTH(A2)-1,DAY(A2)) (コタ) ---- mook様 コタ様 回答有難う御座います どうやら、見落としていたようです 仰るように、1ヶ月前を単純に引き算すると 上記のような結果が現れました 色々調べたところ、同日の1ヶ月前が存在しない場合には その月の1日からになるようです よって [3] 2011/5/31 2011/5/1 ←問題は無いようです [5] 2011/3/31 2011/3/3 ←2011/3/1 [6] 2011/3/30 2011/3/2 ←2011/3/1 [7] 2011/3/29 2011/3/1 ←問題は無いようです です。 自分の頭で考えられるか微妙ですが、模索してみます 回答有難う御座います。 (aki) ---- >同日の1ヶ月前が存在しない場合にはその月の1日からになるようです なるほど。 EDATEという日付関数だと、 ・指定された月数だけ前または後の日付 ・該当日がない場合、その月の末日 を返しますので、末日なら一発で求まるのですが、翌月1日だとちょっと工夫が必要ですね。 なお、 この関数が使用できず、エラー値 #NAME? が返される場合は、分析ツール アドイン を組み込む必要があります。 [R/C] [A] [B] [1] 起点 1ヶ月前 [2] 2011/1/25 2010/12/25 [3] 2011/5/31 2011/5/1 [4] 2011/5/30 2011/4/30 [5] 2011/3/31 2011/3/1 [6] 2011/3/30 2011/3/1 [7] 2011/3/29 2011/3/1 [8] 2011/3/28 2011/2/28 B2 =EDATE(A2,-1)+IF(DAY(EDATE(A2,-1))<DAY(A2),1,0) →B2:B8フィルコピー ↑ 工夫した部分(5行目のように、3/31の前月末が2/28だと DAYが31から28に減るので、+1して翌月の3/1にする) (コタ) ---- ちょこっと気になったのですが、 >同日の1ヶ月前が存在しない場合にはその月の1日からになるようです だと、6/1の1ヶ月と5日前より、5/31の1ヶ月と5日前のが古い日付になるのは問題ないのでしょうか? [R/C] [A] [B] [1] 起点 1ヶ月と5日前 [2] 2010/5/30 2010/4/26 [3] 2010/5/31 2010/5/1 [4] 2010/6/1 2010/4/27 [5] 2010/6/2 2010/4/28 (リベンジ!) ---- 余計なことかも知れませんが、 ・1ヶ月前を計算(その日が存在しなければ何らかの処理)して5日引く ・5日前を計算して1ヶ月前を計算(その日が存在しなければ何らかの処理) では、結果が一致しない場合があります。ご注意下さい。 2011/01/27 12:55 (ちゅうねん) ---- 揚げ足取りではないですが、 >同日の1ヶ月前が存在しない場合にはその月の1日からになるようです というのは、「1ヶ月前が存在しない場合にはその月の1日から5日前をけいさんする」 ということではないでしょうか。 となると、 [R/C] [A] [B] [1] 起点 1ヶ月前 1ヶ月と5日前 [2] 2010/5/30 2010/4/30 2010/4/26 [3] 2010/5/31 2010/5/1 2010/4/26 [4] 2010/3/28 2010/2/28 2010/2/23 [5] 2010/3/29 2010/3/1 2010/2/24 [6] 2010/3/30 2010/3/1 2010/2/24 [7] 2010/3/31 2010/3/1 2010/2/24 [8] 2010/4/1 2010/3/1 2010/2/24 [9] 2010/4/2 2010/3/2 2010/2/25 が期待する結果ということでしょうか。 (Mook) ---- みなさんからのご指摘を、以下にまとめてみました。 求めたい日付はどれなのか、よくご確認ください。 ※「_」セルは未入力または"" [R/C] [A] [B] [C] [D] [E] [F] [G] [1] 起点 先に-1ヶ月 先に-5日 相異 以下参考 1ヶ月前 5日前 [2] 2011/1/25 2010/12/20 2010/12/20 _ 2010/12/20 2010/12/25 2011/1/20 [3] 2011/5/30 2011/4/25 2011/4/25 _ 2011/4/25 2011/4/30 2011/5/25 [4] 2011/5/31 2011/4/26 2011/4/26 _ 2011/4/26 2011/5/1 2011/5/26 [5] 2011/6/1 2011/4/26 2011/4/27 異 2011/4/26 2011/5/1 2011/5/27 [6] 2011/6/2 2011/4/27 2011/4/28 異 2011/4/27 2011/5/2 2011/5/28 [7] 2011/6/3 2011/4/28 2011/4/29 異 2011/4/28 2011/5/3 2011/5/29 [8] 2011/6/4 2011/4/29 2011/4/30 異 2011/4/29 2011/5/4 2011/5/30 [9] 2011/6/5 2011/4/30 2011/5/1 異 2011/4/30 2011/5/5 2011/5/31 [10] 2011/6/6 2011/5/1 2011/5/1 _ 2011/5/1 2011/5/6 2011/6/1 [11] 2011/3/28 2011/2/23 2011/2/23 _ 2011/2/23 2011/2/28 2011/3/23 [12] 2011/3/29 2011/2/24 2011/2/24 _ 2011/2/24 2011/3/1 2011/3/24 [13] 2011/3/30 2011/2/24 2011/2/25 異 2011/2/25 2011/3/1 2011/3/25 [14] 2011/3/31 2011/2/24 2011/2/26 異 2011/2/26 2011/3/1 2011/3/26 [15] 2011/4/1 2011/2/24 2011/2/27 異 2011/2/24 2011/3/1 2011/3/27 [16] 2011/4/2 2011/2/25 2011/2/28 異 2011/2/25 2011/3/2 2011/3/28 [17] 2011/4/3 2011/2/26 2011/3/1 異 2011/2/26 2011/3/3 2011/3/29 [18] 2011/4/4 2011/2/27 2011/3/1 異 2011/2/27 2011/3/4 2011/3/30 [19] 2011/4/5 2011/2/28 2011/3/1 異 2011/2/28 2011/3/5 2011/3/31 [20] 2011/4/6 2011/3/1 2011/3/1 _ 2011/3/1 2011/3/6 2011/4/1 B2 =EDATE(A2,-1)+IF(DAY(EDATE(A2,-1))<DAY(A2),1,0)-5 ^^ ←先に1ヶ月前を求めて後から5日前 C2 =EDATE(A2-5,-1)+IF(DAY(EDATE(A2-5,-1))<DAY(A2-5),1,0) ^^ ^^ ^^ ←先に5日前を求めて後から1ヶ月前 D2 =IF(B2=C2,"","異") E2 =DATE(YEAR(A2),MONTH(A2)-1,DAY(A2)-5) F2 =EDATE(A2,-1)+IF(DAY(EDATE(A2,-1))<DAY(A2),1,0) G2 =A2-5 (コタ) ---- mook様 コタ様 リベンジ!様 回答有難う御座います 返信が遅くなり申し訳ありません > というのは、「1ヶ月前が存在しない場合にはその月の1日から5日前をけいさんする」 ということではないでしょうか。 まさに、これです。よって [R/C] [A] [B] [1] 起点 1ヶ月前 1ヶ月と5日前 [2] 2010/5/30 2010/4/30 2010/4/26 [3] 2010/5/31 2010/5/1 2010/4/26 [4] 2010/3/28 2010/2/28 2010/2/23 [5] 2010/3/29 2010/3/1 2010/2/24 [6] 2010/3/30 2010/3/1 2010/2/24 [7] 2010/3/31 2010/3/1 2010/2/24 [8] 2010/4/1 2010/3/1 2010/2/24 [9] 2010/4/2 2010/3/2 2010/2/25 これを求めていました 本当に有難う御座います ここからが関数ですね アドインというものがあるんですね 未知の世界に入りそうです。 自分なりに上記の数字を見ながら頑張ります。 そして、また相談に来ます (aki) ---- 数式でもできると思いますが、マクロのケースです。 Alt+F11を押して、挿入⇒標準プロシージャ で表示されたウィンドウに下記を置き Function AkiDateAdd(dt, m, d) If IsDate(dt) = False Then AkiDateAdd = "#NOT_DATE" Exit Function End If Dim tmLastDate As Date tmLastDate = DateSerial(Year(dt), Month(dt) + m + 1, 0) If Day(dt) > Day(tmLastDate) Then AkiDateAdd = DateAdd("d", tmLastDate, d + 1) Else AkiDateAdd = DateSerial(Year(tmLastDate), Month(tmLastDate), Day(dt) + d) End If End Function EXCEL に戻って、 A1に日付があるとしたら B1 に =IF(A1="","",AkiDateAdd(A1,-1,-5)) でどうでしょうか。 AkiDateAdd は 1番目の引数に、2番目の引数(月)と3番目の引数(日)を足す関数です。 ただし、m月後(前)に該当日がないときに今回のルールを適用しています。 B列の書式は日付にしておいてお試しください。 (Mook) ---- mokk様 マクロ有難う御座います。是非試してみたいと思います 自分の中で、単純に「1ヶ月前が存在しない場合にはその月の1日」を計算し A1に、期日 B1に、=IF(DAY(A1)=DAY(DATE(YEAR(A1),MONTH(A1)-1,DAY(A1))),DATE(YEAR(A1),MONTH(A1)-1,DAY(A1)),DATE(YEAR(A1),MONTH(A1),1)) でやってみました。これも合わせて検証させていただきたいと思います。 本当にお付き合いいただき有難う御座います。 (aki) ...
-
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201101/20110125234208.txt
- [detail]
- similar
PREV
NEXT
Powered by
Hyper Estraier 1.4.13, with 97009 documents and 608121 words.
訪問者: