- 締切済み
エクセルで、1ヶ月後の該当日(平日)を出したい
エクセルで、1ヶ月後の該当日(平日)を出したい。8/29なら9/29。ただし該当日が平日でない場合は近い後日を出す。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- heinell
- ベストアンサー率35% (420/1172)
こちらで試したところちゃんと表示されますが(Excel2000・2003で確認。当然2005/2/16以降はN/Aになります) ちなみに以下の式をセルに書き込むとどんな値を返すでしょう? =YEAR(A1) =YEAR(C1) =DATE(YEAR(A1),MONTH(A1)+1,DAY(A1))
- heinell
- ベストアンサー率35% (420/1172)
あれ?確かに違ってる(というか意図した仕掛けが入ってない) =IF(ISNA(VLOOKUP(DATE(YEAR(A1),MONTH(A1)+1,DAY(A1)),A:A,1,FALSE)),VLOOKUP(VLOOKUP(DATE(YEAR(A1),MONTH(A1)+1,DAY(A1)),A:B,2,TRUE)+1,B:C,2,FALSE),DATE(YEAR(A1),MONTH(A1)+1,DAY(A1))) ですね。訂正します。 できればその100行のA列のデータ見せてもらえると一番助かります。 サンプルのデータだと実質テストになるのが2008/7/22~25の4行だけなのです。 (どのみち要求仕様に「A列のデータの中から自分自身の約1ヵ月後を求めよって矛盾があるので、絶対に最後の1ヶ月分がエラーになります)
補足
すみません、また#N/Aになりました 2004/10/27 1 2004/10/27 #N/A 2004/10/28 2 2004/10/28 #N/A 2004/10/29 3 2004/10/29 #N/A 2004/11/1 4 2004/11/1 #N/A 2004/11/2 5 2004/11/2 #N/A 2004/11/3 6 2004/11/3 #N/A 2004/11/4 7 2004/11/4 #N/A 2004/11/5 8 2004/11/5 #N/A 2004/11/8 9 2004/11/8 #N/A 2004/11/9 10 2004/11/9 #N/A 2004/11/10 11 2004/11/10 #N/A 2004/11/11 12 2004/11/11 #N/A 2004/11/12 13 2004/11/12 #N/A 2004/11/15 14 2004/11/15 #N/A 2004/11/16 15 2004/11/16 #N/A 2004/11/17 16 2004/11/17 #N/A 2004/11/18 17 2004/11/18 #N/A 2004/11/19 18 2004/11/19 #N/A 2004/11/22 19 2004/11/22 #N/A 2004/11/23 20 2004/11/23 #N/A 2004/11/24 21 2004/11/24 #N/A 2004/11/25 22 2004/11/25 #N/A 2004/11/26 23 2004/11/26 #N/A 2004/11/29 24 2004/11/29 #N/A 2004/11/30 25 2004/11/30 #N/A 2004/12/1 26 2004/12/1 #N/A 2004/12/2 27 2004/12/2 #N/A 2004/12/3 28 2004/12/3 #N/A 2004/12/6 29 2004/12/6 #N/A 2004/12/7 30 2004/12/7 #N/A 2004/12/8 31 2004/12/8 #N/A 2004/12/9 32 2004/12/9 #N/A 2004/12/10 33 2004/12/10 #N/A 2004/12/13 34 2004/12/13 #N/A 2004/12/14 35 2004/12/14 #N/A 2004/12/15 36 2004/12/15 #N/A 2004/12/16 37 2004/12/16 #N/A 2004/12/17 38 2004/12/17 #N/A 2004/12/20 39 2004/12/20 #N/A 2004/12/21 40 2004/12/21 #N/A 2004/12/22 41 2004/12/22 #N/A 2004/12/23 42 2004/12/23 #N/A 2004/12/24 43 2004/12/24 #N/A 2004/12/27 44 2004/12/27 #N/A 2004/12/28 45 2004/12/28 #N/A 2004/12/29 46 2004/12/29 #N/A 2004/12/30 47 2004/12/30 #N/A 2004/12/31 48 2004/12/31 #N/A 2005/1/3 49 2005/1/3 #N/A 2005/1/4 50 2005/1/4 #N/A 2005/1/5 51 2005/1/5 #N/A 2005/1/6 52 2005/1/6 #N/A 2005/1/7 53 2005/1/7 #N/A 2005/1/10 54 2005/1/10 #N/A 2005/1/11 55 2005/1/11 #N/A 2005/1/12 56 2005/1/12 #N/A 2005/1/13 57 2005/1/13 #N/A 2005/1/14 58 2005/1/14 #N/A 2005/1/17 59 2005/1/17 #N/A 2005/1/18 60 2005/1/18 #N/A 2005/1/19 61 2005/1/19 #N/A 2005/1/20 62 2005/1/20 #N/A 2005/1/21 63 2005/1/21 #N/A 2005/1/24 64 2005/1/24 #N/A 2005/1/25 65 2005/1/25 #N/A 2005/1/26 66 2005/1/26 #N/A 2005/1/27 67 2005/1/27 #N/A 2005/1/28 68 2005/1/28 #N/A 2005/1/31 69 2005/1/31 #N/A 2005/2/1 70 2005/2/1 #N/A 2005/2/2 71 2005/2/2 #N/A 2005/2/3 72 2005/2/3 #N/A 2005/2/4 73 2005/2/4 #N/A 2005/2/7 74 2005/2/7 #N/A 2005/2/8 75 2005/2/8 #N/A 2005/2/9 76 2005/2/9 #N/A 2005/2/10 77 2005/2/10 #N/A 2005/2/11 78 2005/2/11 #N/A 2005/2/14 79 2005/2/14 #N/A 2005/2/15 80 2005/2/15 #N/A 2005/2/16 81 2005/2/16 #N/A 2005/2/17 82 2005/2/17 #N/A 2005/2/18 83 2005/2/18 #N/A 2005/2/21 84 2005/2/21 #N/A 2005/2/22 85 2005/2/22 #N/A 2005/2/23 86 2005/2/23 #N/A 2005/2/24 87 2005/2/24 #N/A 2005/2/25 88 2005/2/25 #N/A 2005/2/28 89 2005/2/28 #N/A 2005/3/1 90 2005/3/1 #N/A 2005/3/2 91 2005/3/2 #N/A 2005/3/3 92 2005/3/3 #N/A 2005/3/4 93 2005/3/4 #N/A 2005/3/7 94 2005/3/7 #N/A 2005/3/8 95 2005/3/8 #N/A 2005/3/9 96 2005/3/9 #N/A 2005/3/10 97 2005/3/10 #N/A 2005/3/11 98 2005/3/11 #N/A 2005/3/14 99 2005/3/14 #N/A 2005/3/15 100 2005/3/15 #N/A
- heinell
- ベストアンサー率35% (420/1172)
※前提 ・8/26以降も該当日を満たす日はA列に記載されている。(補足にある表だと8/25までしかないので7/28以降は該当日がA列に存在しません) ・B列は1から連番が振ってある(非表示でOK) ・C列は=A1等でA列の内容がそのままコピーされている(非表示でOK) ならばD1は =IF(ISNA(VLOOKUP(DATE(YEAR(A1),MONTH(A1)+1,DAY(A1)),A:A,1,FALSE)),VLOOKUP(VLOOKUP(DATE(YEAR(A1),MONTH(A1)+1,DAY(A1)),A:B,2,FALSE),B:C,2),DATE(YEAR(A1),MONTH(A1)+1,DAY(A1))) これをD列の該当セルにコピーすればOKです。 必然的に一番最後の1ヶ月分はA列に該当日データが存在しなくなるので必ずエラーになります。 B列の連番・C列のA列コピーは表示する必要がないので非表示にしてOKなんですが、コピーし忘れによる動作不良にはご注意を。 余談。 これで該当日が前日だったらB・C列の仕掛け無しで =VLOOKUP(DATE(YEAR(A1),MONTH(A1)+1,DAY(A1)),A:A,1,TRUE) これでおしまいだったのに…
補足
ありがとうございます でもすべての行でD列は#N/Aとなりました。 ちなみに確認しますと、A列はA1から2008/4/14~A100が2008/8/29 B列は1~100。 C列は計算式が「=A1」~「=A100」と入ってます。
- heinell
- ベストアンサー率35% (420/1172)
単純に土日を外すだけなら A1に元日付 B1 =DATE(YEAR(A1),MONTH(A1)+1,DAY(A1)) C1(結果)=IF(WEEKDAY(B1,2)>=6,B1+(8-WEEKDAY(B1,2)),B1) で求まりますけど、祝祭日・会社独自の休日(年末年始等)は?が問題。 特に年によってかわる春分の日・秋分の日の扱いや振替休日・ハッピーマンデー等もあるので結構洒落にならない仕掛けになります。
補足
すみません。質問を元に戻します。 下記のようにA列には、日付はすでに入っていてその中から該当日を摘出するのです。(おおむね土日以外のすべての日になってます) 7/22の該当日は8/22です。7/23の該当日は(23,24が無いので)8/25です。 よろしくお願いします。 2008/7/22 2008/7/23 2008/7/24 2008/7/25 2008/7/28 2008/7/29 2008/7/30 2008/7/31 2008/8/1 2008/8/4 2008/8/5 2008/8/6 2008/8/7 2008/8/8 2008/8/11 2008/8/12 2008/8/13 2008/8/14 2008/8/15 2008/8/18 2008/8/19 2008/8/20 2008/8/21 2008/8/22 2008/8/25
- kokorone
- ベストアンサー率38% (417/1093)
平日の定義が分からないと、応えられません。 土日以外の祝日は? 振替休日は?
補足
お世話になります 平日=土日以外すべてでお願いします。
補足
ありがとうございます。 上記のデータの横、セルE1を=YEAR(A1)としました。すると2004。 FIを=YEAR(C1)としました。すると2004。 G1を=DATE(YEAR(A1),MONTH(A1)+1,DAY(A1))としました。すると2004/11/27となりました。 ちなみに、エクセル2007です。試しにエクセル2002でやっても同じでした。