プロが教えるわが家の防犯対策術!

あるセルに「平成16年2月2日」と入力されており、この日付から14日以内の日付(土日、祝日を除く)を表示する方法は

表示例)
平成16年2月2日
平成16年2月3日
平成16年2月4日
平成16年2月5日
平成16年2月6日
平成16年2月9日
平成16年2月10日
平成16年2月12日
平成16年2月13日

出来れば最終的には一つのセルに表示したいです(希望)

A 回答 (6件)

vbaでやった方が簡単なんですが、あえて関数で。



A2に2月2日がはいっていて、A3、A4と続けるものとします。
A3には
=IF(WEEKDAY($A$2+1)=7,"",IF(WEEKDAY($A$2+1)=1,"",$A$2+1))
と入れればOKです。
A4は
=IF(WEEKDAY($A$2+2)=7,"",IF(WEEKDAY($A$2+1)=2,"",$A$2+2))
これを任意の数分コピーすればOKです。

最後にこれを&か何かで一つのセルに入力すればいいのでは?

vbaの方がよかったらまたきいてください。

この回答への補足

・教えて頂いた方法ですと16年2月11日(祝日)が表示されてしまいます。祝日の処理はどうするのでしょうか。
・入力規則のリストを使用すると空白のセルを選択できることになります。(空白を選択したくありません)

今回の場合はVBAのほうが良いのでしょうか

補足日時:2004/03/25 14:15
    • good
    • 0

土日だけでいいなら


=A1+CHOOSE((WEEKDAY(A1),1,1,1,1,1,3,2)
として下にコピーすれば
A1が金土日の場合次のセルは月曜日になります。
祝日の場合は振替休日等があるためVBA(マクロ)でないと難しいと思います。
飛ばすのではなく色を付けるなら対応法は有ります。
    • good
    • 0

分析ツールをインストールしてあればworkday()関数で土日祝日を除


外できます。A1が2月2日として、
A2: =workday(A1,1,祝日リストの範囲)
ですね。そこにif()関数で無様な判定をして14日以内の条件を満足さ
せればオッケーでしょう。

この回答への補足

分析ツールはインストールしてあります。
ここに質問をする前にworkdayを使用したのですが、「祝日リストの範囲」の意味が理解できませんでした。

祝日リストの範囲とはどのように指定するのでしょうか

補足日時:2004/03/25 14:31
    • good
    • 0

#2のmshr1962です。



=WORKDAY(開始日,終了日,祝日)
ですが祝日の部分は
{"2004/2/11","2004/3/20"}
のようにするか、祝日を入力した範囲のセル座標(A1:A20)で大丈夫です。
ただWORKDAY関数は日数を計算する関数ですが...

この回答への補足

WEEKDAYの間違いでした。

補足日時:2004/03/25 15:16
    • good
    • 1

祝日を除外するのは、VBAでないと難しい。


>最終的には一つのセルに表示したいです
これも関数式だと複雑になりすぎる。
’-----
土日除きの14日間は
A1に指定日付
E列に
E1は=A1
E2は=$E$1+ROW(E2)-1、E3以下に複写。
F1に=IF(WEEKDAY(E1,2)>5,"",WEEKDAY(E1,2))
F2以下に複写
G1に=COUNT($F$1:F1)
G2以下に複写
B1に=INDEX($E$1:$E$20,MATCH(ROW(A1),$G$1:$G$20,0))
B14まで複写。
(テスト)A1:B14は下記。B列が求める日付14日分。
A列    B列
2004/3/252004/3/25
2004/3/26
2004/3/29
2004/3/30
2004/3/31
2004/4/1
2004/4/2
2004/4/5
2004/4/6
2004/4/7
2004/4/8
2004/4/9
2004/4/12
2004/4/13
E1:G21は下記になる。
E列   F列   G列 
2004/3/2541
2004/3/2652
2004/3/272
2004/3/282
2004/3/2913
2004/3/3024
2004/3/3135
2004/4/146
2004/4/257
2004/4/37
2004/4/47
2004/4/518
2004/4/629
2004/4/7310
2004/4/8411
2004/4/9512
2004/4/1012
2004/4/1112
2004/4/12113
2004/4/13214
2004/4/14315
    • good
    • 0

#2のmshr1962です。


>入力規則のリストを使用すると空白のセルを選択できることになります。
直接でなく入力規則のリストで使うのですか?それなら
A列に祝日のリストを作る。(振替休日も用意してください)
B列の先頭に基準になる日(今日現在なら=TODAY())
B2に=B1+1としてB14までコピー
C列で土日と祝日の判定
=IF(AND(ISERROR(MATCH(B1,$A$1:$A$30,0)),WEEKDAY(B1,2)<6),B1,"")
D列で整列
=IF(ISERROR(SMALL($C$1:$C$14,ROW())),"-",SMALL($C$1:$C$14,ROW()))
D列を名前定義して入力規則の元の値に入力してください。
土日祝日の分は"-"が表示されます。
    • good
    • 0
この回答へのお礼

ありがとうございます

過去の質問のカレンダーと今回の回答を組み合わせて、ほぼ思うように出来ました。

お礼日時:2004/03/26 14:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!