人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

可能でしたら是非教えてください。そして初心者並みに解りやすくお願いします。 」
という質問をさせていただき、いろいろ教えていただいたのですが。。。祝日を考え忘れていました。グスン (ノ(ェ)'。)
土日祝祭日にかかる月は出てくると思いますので(何年先でも)それも自動的に平日になるように出来る方法を教えてください。
可能でしたら土日祝祭日の前日若しくは前前日と翌日、若しくは翌々日の両方を初心者レベルで解りやすくお願いします。

●質問者: kanachan
●カテゴリ:コンピュータ
✍キーワード:3月 3月15日 3月31日 Excel またまた
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● EddyYamanaka
●20ポイント

=DATE(YEAR(TODAY()),MONTH(TODAY())+1,0)

つまり「来月の0日」でどうでしょう。」

◎質問者からの返答

???来月の0日?とはどういう意味でしょうか


2 ● EddyYamanaka
●20ポイント

先程の回答は削除してください。


3 ● SALINGER
●20ポイント

祝日は無理とか言ってる人いるけど、それはExcelの関数に無いだけ。

祝日が変わるという意見も、現在の祝日を調べる関数を作ればいいだけ。

http://www.vector.co.jp/soft/win95/business/se189574.html

この方の祝日関数を使えば楽です。

以下このWhatDay()関数をコピーして

その月の最後の平日を求めるユーザー定義関数を作ればこんな感じ。

Function Heijitu() As Date
 Dim mydate As Date
 mydate = DateSerial(Year(Now()), Month(Now()) + 1, 1) - 1
 If WhatDay(mydate) = 0 Then
 Heijitu = ""
 ElseIf WhatDay(mydate) = 1 Then
 Heijitu = mydate
 Else
 While WhatDay(mydate) <> 1
 mydate = mydate - 1
 Wend
 Heijitu = mydate
 End If
End Function
◎質問者からの返答

ごめんなさい!

どこに関数をどのように入れたら良いか解らなくて…

もう少し詳しいと助かります。


4 ● SALINGER
●20ポイント

まず、VBAの始め方から

http://www.macrospread.com/introduction/images/VBA_Introduction_...

の標準モジュールにダウンロードしてきたエクセルのファイルのWhatDay()関数の全文をコピーして私の書いたコードもコピーします。

こんな感じ

Function WhatDay(日付) As Integer
・
・
・
End Function

Function Heijitu() As Date
・
・
・
End Function

そして、呼び出したいセルの数式に[=Heijitu()]と入れるだけ。

ついでにそのセルの書式設定を日付にしてね。

◎質問者からの返答

…やっぱり途中で解らなくなります。Whatday()関数がどれかが解らなくてどこのセルに何の式を入れるのか?VBAも開いたはいいですが、何を入れるのか使った事がなくて不明です、、、

すみません


5 ● Baku7770
●20ポイント

まず、末日ですが翌月1日の前日となりますので

=Today()+32-day(today())……a1

とでもすれば、今月32日(計算上の日付)が求まりますので、

=date(year(a1),month(a1),1)-1

が末日となります。ここまでを1本の式にしたければ、

=date(year(Today()+32-day(today())),month(Today()+32-day(today())),1)-1……b1

となります。

で、この日が土日だったら除くのなら

=if(weekday(b1,2)>5,b1-weekday(b1,2)+5,b1)

で金曜日になります。

第2金曜日はその月が土曜から始まる場合と、それ以外の曜日で始まる場合に分けます。

土曜日で始まる場合は、6日が第2金曜日ですから、date関数を使えば簡単に作れます。

それ以外の曜日なら、今月1日をc1とすれば

=c1+13-weekday(c1,1)

で計算できます。

◎質問者からの返答

すみません、、、初心者レベルでお願いできますか?Excelは使用してますが関数はせいぜいSUMくらいで他は殆ど使用したことのないもので、、、

お恥ずかしい限りですがサッパリ解りません。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ