[[20070711145349]] 『月末日の表示』(ま〜にゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『月末日の表示』(ま〜にゃん)

 こんにちわ。

 TODAY関数を加工して、その月の末日を表示するようにできますか?
 (EX:7/11→7/31、9/4→9/30)
 さらに、その月の最後の平日(祝日のことは考えず・・・)を表示させるには?
 (EX:6/25→6/29(金)、7/11→7/31(火))

 ご教示くださいませ。

 =EOMONTH(TODAY(),0)
 =DATE(YEAR(TODAY()),MONTH(TODAY())+1,1)-1
 (ROUGE)

 ROUGEさま、早速のご教示ありがとうございます。

 =EOMONTHのほうはダメでした。エクセルのバージョンの問題でしょうか?
 (Excel2000です。)
 =DATE…のほうはできました♪
 TODAYから次月1日を出して、その1日前ってことなのですね。

 それでいくと、IFかなにかで、
 「1日前」が日曜だったら「3日前」、土曜だったら「2日前」を
 表示させることができるのかな、と思ったのですが・・・、
 どういう論理式を書けばいいのか分かりませんでした・・・。

 再度ご教示くださいませ。

 (ま〜にゃん)

 EOMONTHはアドイン関数です。
 ツール-->アドイン-->分析ツールにチェックを入れてOKとしないと使用できません。

 > それでいくと、IFかなにかで、
 > 「1日前」が日曜だったら「3日前」、土曜だったら「2日前」を
 > 表示させることができるのかな、と思ったのですが・・・、
 > どういう論理式を書けばいいのか分かりませんでした・・・。

 WEEKDAY関数を使ったり、TEXT(番地,"aaa") などとすると、数値や曜日が返ります。
 それを元に判定させてはどうでしょうか。
 (日曜の3日前は木曜日ですが、良いのでしょうか?)

 (ROUGE)

 あえて EOMONTH関数を使っていません。4月だけ29日が祝日なので
 別処理としています。
(純丸)(o^-')b 

 =IF(MONTH(TODAY())<>4,
    DATE(YEAR(TODAY()),MONTH(TODAY())+1,0)-(MAX(0,WEEKDAY(DATE(YEAR(TODAY()),MONTH(TODAY())+1,0),2)-5)),
    IF(WEEKDAY(TODAY()-DAY(TODAY())+1,2)=7,
   DATE(YEAR(TODAY()),4,27),
      IF(OR(WEEKDAY(TODAY()-DAY(TODAY())+1,2)=5,WEEKDAY(TODAY()-DAY(TODAY())+1,2)=6),
         DATE(YEAR(TODAY()),4,28),
       DATE(YEAR(TODAY()),4,30))))


 配列数式です。
=MAX(IF(WEEKDAY(DATE(YEAR(TODAY()),MONTH(TODAY())+1,1)-ROW(A1:A7),2)<=5,DATE(YEAR(TODAY()),MONTH(TODAY())+1,1)-ROW(A1:A7),""))

 Shift+Ctrlキー押しながらEnterキーで確定させてください。

 >その月の最後の平日(祝日のことは考えず・・・)
 これって、祝日も除外ってことだったのかな・・・?(^_^A;
 そうであれば、↑の式は無視してください。・・・_/ ̄|○ il||li

 (川野鮎太郎)

 アドインが組み込んであることが前提ですが、
 =WORKDAY(EOMONTH(A1,0)+1,-1)  ということかしら?
 質問を読み違えているのかな?? でしたら、この式は無視してください  (Hatch)


 皆様、いろいろな方法ありがとうございました☆

 私がしたかったのは、その月の、いわゆる最終「営業日」を表示させることだったので、
 純丸さまのを使わせていただきました。
 アドイン関数というのを理解してないのですが、
 分析ツールというのにチェックをつけると、
 なんかインストールをしろってメッセージが出ちゃうので・・・。
 「EOMONTH」が使えないままです(>_<)
 鮎太郎さまの「配列数式」はゆっくり考えてみます。
 (そうしないと理解できない・・・。)

 ありがとうございましたの(ま〜にゃん)でした〜。

 仕事の余裕が出来たので、教えていただいた関数の意味を考えているのですが・・・

 純丸さまの関数の中で、
 DATE(YEAR(TODAY()),MONTH(TODAY())+1,0)-(MAX(0,WEEKDAY(DATE(YEAR(TODAY()),MONTH(TODAY())+1,0),2)-5)
という部分を訳す(?)と
 (今年来月0日=今年今月末日)-(「0と今年今月末日の曜日(1月曜〜7日曜)と2のうちで一番大きい数」-5)
となったのですが、これはいったい何を導き出しているのですか?
理解が間違っているのでしょうか・・・(>_<)

 (ま〜にゃん)

 >MAX(0,WEEKDAY(DATE(YEAR(TODAY()),MONTH(TODAY())+1,0),2)-5)
 この部分は
 MAX(0,      DATE(________,___________,_)
   WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,0),2)-5)
     WEEKDAY(~~~~~~~~~~今月末日~~~~~~~~~~,~)
 ですので、↓の様な対応になると思います。
 月	火	水	木	金	土	日	今月末の曜日
 1	2	3	4	5	6	7	曜日番号
 -4	-3	-2	-1	0	1	2	返される値
 返される値と「0」とのMAXですので
  土曜日の場合は 今月末日- 1
  日曜日の場合は 今月末日- 2
  その他の場合は 今月末日- 0 

 どこからどこまでが1つの式なのか
 見極めを誤ると大変なことになりますので
 お気をつけ下さい。

 (HANA)

 =DATE(YEAR(A1),MONTH(A1)+1,1)-1-SUM(IF(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,1)-1,2)={6,7},{1,2},0))
(HANAHANAsiturei)


 0と〜と2のMAXではなくて、
0と(WEEKDAYの2のパターンの)数値のMAXなのですね。
HANAさま、丁寧な解説ありがとうございました。

 そしてHANAHANAsitureiさま(HANAさまと同一人物ですか?)、
ご提示いただいた関数は私の質問した関数と同じ結果が出るものでしょうか?
後半は「『〜=6から7』が真なら『1から2』、偽なら0」の合計でしょうか?

 (ま〜にゃん)

 「『〜=6か7』が真なら『1か2』、偽なら0」
そうですよ。
(HANAHANAsiturei)<>(HANA)


 To HANAHANAsiturei さん
 このような場所では、紛らわしいHNを使用する事を避ける
 と言のは、基本的なルールだと思いますが
 ご存じありませんでしたか?
 一般的にはその様になっておりますので
 覚えて於かれた方が良いと思いますよ。
 一緒に、簡潔すぎる文章も分かりづらい と言う事も。
 まぁ、分かってもらおうと言う意志が無いのかもしれませんが。(笑)

 To ま〜にゃん さん
 「正しく理解しているが表現が違う」と言うだけかもしれませんが
 >「『〜=6から7』が真なら『1から2』、偽なら0」の合計
 の“から”と言う表現は違うような気がします。

 IF関数で
  イ. WEEKDAY関数の戻り値が=6 が(真)→「1」 (偽)→「0」
  ロ. WEEKDAY関数の戻り値が=7 が(真)→「2」 (偽)→「0」
 SUM関数で
  イの結果とロの結果の合計 です。

 (HANA)

 HANAさま、ご指摘どおり、理解が間違っていました・・・。
するどいつっこみありがとうございます<m(__)m>
SUM関数の結果は
戻り値=6のとき→1
戻り値=7のとき→2
戻り値が6・7以外のとき→0 なのですね?
ま〜にゃんは
戻り値=6から7(6以上7以下)のとき→1から2の合計(=3)
戻り値が6未満8以上のとき→0
だと思っていました・・・。
WEEKDAYに小数なんてないのに、なんで「から」と考えたんでしょう・・・。
あん・ぽん・たーん ですね。

 HANAHANAsitureiさま、
ま〜にゃんがもう少し分かっている人なら、
ご提示いただいた関数でも
理解するのに必要十分だったと思うのですが、
なにぶん修行中の身だもので・・・(^_^;)
すみませんでした&ありがとうございました☆

 (ま〜にゃん)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.