またまたExcelで教えてください。

日付を自動的に当日にすることは出来るのですが、どうしても末日にすることが出来ず、毎回入力しなくてはなりません。
自動的に末日にしたり毎月第2金曜日にしたりしたいのですが、、、出来ますか?

例えば第3木曜日だったら3月に開いた時に自動的に「3月15日」になったり。
末日なら3月に開いたら自動的に末日である日の「3月31日」になったり。それで末日が土日だったらこれまた自動的に金曜日に出来たらいいなぁと。。。
3月は31日が土曜日なので末日になるようにしてても土日だから自動的に30日になってほしい。

可能でしたら是非教えてください。そして初心者並みに解りやすくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2007/02/25 14:22:34
  • 終了:2007/02/25 15:32:54

ベストアンサー

id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982007/02/25 15:21:25

ポイント35pt

=DATE(YEAR(A1),MONTH(A1),IF(-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),1)+(A2-1)*7+A3+1<=0,-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),1)+A2*7+A3+1,-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),1)+(A2-1)*7+A3+1))

A1にひ 日付を入れてください。

A2には 第何曜日の 週の数だけ入れてください。

A3には 曜日の数字を入れてください。

日 1

月 2

火 3

水 4

木 5

金 6

土 7

3月の第3木曜日だったら

A1 2007/3/1

A2 3

A3 5

としてください。

すると 3/15 となります。

id:kanachan

ありがとうございます!出来ました!!

すごく感動!!!

すっごく難しい関数なので大変だったのではないでしょうか?

本当にありがとうございます。

2007/02/25 15:32:27

その他の回答(1件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982007/02/25 14:37:31

ポイント35pt

末日のみですが。

A1に入れた日付の末日とします。

土日の場合は、最後の金曜日となります。

=IF(TEXT(DATE(YEAR(A1),MONTH(A1)+1,1)-1,"aaa")="日",DATE(YEAR(A1),MONTH(A1)+1,1)-3,IF(TEXT(DATE(YEAR(A1),MONTH(A1)+1,1)-1,"aaa")="土",DATE(YEAR(A1),MONTH(A1)+1,1)-2,DATE(YEAR(A1),MONTH(A1)+1,1)-1))

なお、この数式のセルの書式は 日付にしてください。

id:kanachan

ありがとうございます。

でも、、、何故か「明治33年1月1日」と表示されまして。

入力時に他にやることあるんでしょうか?

2007/02/25 14:49:45
id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982007/02/25 15:21:25ここでベストアンサー

ポイント35pt

=DATE(YEAR(A1),MONTH(A1),IF(-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),1)+(A2-1)*7+A3+1<=0,-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),1)+A2*7+A3+1,-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),1)+(A2-1)*7+A3+1))

A1にひ 日付を入れてください。

A2には 第何曜日の 週の数だけ入れてください。

A3には 曜日の数字を入れてください。

日 1

月 2

火 3

水 4

木 5

金 6

土 7

3月の第3木曜日だったら

A1 2007/3/1

A2 3

A3 5

としてください。

すると 3/15 となります。

id:kanachan

ありがとうございます!出来ました!!

すごく感動!!!

すっごく難しい関数なので大変だったのではないでしょうか?

本当にありがとうございます。

2007/02/25 15:32:27
  • id:taknt
    >でも、、、何故か「明治33年1月1日」と表示されまして


    ええと すみませんが A1には
    =NOW()
    とか入れてください。

    A1のセルに特定の日付を入れることにより
    その日付の末日を 出すことができます。
  • id:kanachan
    あ、解りました!!A1にNOWの関数を入れて、必要なセル?に上の関数を入れるんだったのですね。ありがとうございます。
    もう1つの曜日指定?「毎月第○週○曜日」も出来ましたら教えてください。
  • id:luxon
    書きかけで放置していたら回答がついていたのでコメント
    単なる月末は、「次の月の1日の1日前」なので、
    A1に日付(today()とか)を入れて、A2に
    =DATE(YEAR($A$1),MONTH($A$1)+1,1)-1
    これに基づいて土日判断を加えると
    =IF(WEEKDAY($A$2)=1,$A$2-2,IF(WEEKDAY($A$2)=7,A2-1,$A$2))
    質問には土日しか書いてありませんが、きっと祝日もですよね。つまり今年の4月は30日が月曜で振り替え休日なので月末はきっと27にしたいのでしょうけれど、これはまぁworkdaysを使うのは大げさなので独自のif文で処理追加か手動かな。

    第x回目のy曜日は...仕事が終わってから覗いて誰も回答してなかったらやってみます。
  • id:kanachan
    あ、、、祝日を全く考えていませんでした><
    っていうことは末日にしても曜日にしても祝日を考えなくてはいけないですよね。。。
    質問復活しますので是非教えてください
  • id:taknt
    祝日の判定は、無理です。
    なにせ法律で 変わりますからね。
  • id:motchy55
    ひとつのセルで完結させてみました。
    いっしょうけんめい考えていたら締め切られてたので、コメントで書かせていただきます。
    祝日は・・・無理だと思います。

    分析ツールアドインを使います。
    メニューから、[ツール]-[アドイン]で、分析ツールにチェックはついていますか?ついていなければチェックしてください。

    当月末
    =EOMONTH(TODAY(),0)


    第3木曜日
    =IF(6-WEEKDAY(EOMONTH(TODAY(),-1)+1)>0,5-WEEKDAY(EOMONTH(TODAY(),-1)+1)+14,5-WEEKDAY(EOMONTH(TODAY(),-1)+1)+21)


    当月末(土日の場合前倒し)
    =IF(WEEKDAY(EOMONTH(TODAY(),0))=7,EOMONTH(TODAY(),0)-1,IF(WEEKDAY(EOMONTH(TODAY(),0))=1,EOMONTH(TODAY(),0)-2,EOMONTH(TODAY(),0)))

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません