advanced help
per page, with , order by , clip by
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.

訪問者:カウンタValid HTML 4.01 Transitional