プロが教える店舗&オフィスのセキュリティ対策術

2点教えて頂きたいことがありますのでお願いします。

1.A1に数字の1を入力した場合B1に4月、更にA2に1を入力した場合B1に5月、更にA3に1を入力した場合B1に6月・・・順に12月まで表示させるにはどうしたら良いのでしょうか。
  この時、A1~A12は、1が入ったままです。

2.A1に4月入力した場合、A2からA31までのA列に4月1日から4月30日までの土曜日と日曜日と祝日(休日)を除いた日にちを表示すさせるにはどうしたら良いのでしょうか。
  5月と入力した場合も同様です。

質問の2点は、別々のものです。
よろしくお願いします。
  
  

A 回答 (3件)

1.の問題==>VLOOKUP関数の利用


B1 に =IF(A1=1,VLOOKUP(ROW(),{1,"4月";2,"5月";3,"6月";4,"7月"},2,FALSE),"")
B12まで式を複写。
(),{1,"4月";2,"5月";3,"6月";4,"7月"},はその後手抜きしてます。
12,"12月"まで入れること。
ーーー
2。の問題
Sheet2
A列   B列
20084<==年と月A1,B1
2008/4/131
2008/4/242
2008/4/353
2008/4/464
2008/4/57
2008/4/61
2008/4/725
2008/4/836
2008/4/947
2008/4/1058
2008/4/1169
2008/4/127
2008/4/131
2008/4/14210
2008/4/15311
2008/4/16412
2008/4/17513
2008/4/18614
2008/4/197
2008/4/201
2008/4/21215
2008/4/22316
2008/4/23417
2008/4/24518
2008/4/25619
2008/4/267
2008/4/271
2008/4/28220
2008/4/29321
2008/4/30422
2008/5/15
2008/5/26
2008/5/37
ーーーー
上記B、C列は
B2は =WEEKDAY(A2)
C2は =IF(AND(MONTH(A2)=$B$1,NOT(OR(B2=1,B2=7))),MAX($C$1:C1)+1,"")
それぞれ下方向に式を複写。
結果
上記B,C列の通り。
ーーーー
Sheet1に置いて
=INDEX(Sheet2!$A$2:$C$40,MATCH(ROW()-1,Sheet2!$C$2:$C$40,0),1)
と入れて下方向に式を複写
結果
2008/4/1
2008/4/2
2008/4/3
2008/4/4
2008/4/7
2008/4/8
2008/4/9
・・・
2008/4/29
2008/4/30
#N/A
#N/A
ーーー
上記の手抜き
(1)祝日を考慮
(2)Sheet1の#N/Aを出さない
ーーー
(2)は=IF(ROW()-1>max(Sheet2!$C$1:$C$40),"",上記式)
(1)は祝日日付リストをある列につくり、VLOOKUP関数で検索し
今考えているSheet2のA列のhi日付けが祝日ならD列に1と出す。
=IF(AND(MONTH(A2)=$B$1,NOT(OR(B2=1,B2=7))),MAX($C$1:C1)+1,"")
の式を
=IF(AND(MONTH(A2)=$B$1,NOT(OR(B2=1,B2=7)),D2<>1)),MAX($C$1:C1)+1,"")
に変える。
以上のやり方は、Sheet2という作業シートを使うので、自称 imogasi方式。
作業シートを使うが、やっていることが、エクセル関数中級の人にもわかると思ってあげます。
ーーー
小生ならVBAでプログラムを組んでやります。ロジックは上記とほぼ同じです。
日付決定(最初は月の1日)
祝日か、土日かーー>表示しない
聡でないA列に日付等書き込む
日付を+1して繰り返し
つきが変わると終了
    • good
    • 0

1.


まず、条件の数があいません。B1の最終が12月なら、A列は9行だけ
でおしまいです。A10以降のセルに入力があった時の処理は質問に
書いてありませんね。
次に、B列に表示させる値の形式が不明です。文字列「4月」なの
か、特定の日付で表示形式が「m"月"」なのかで処理が大きく変わ
ります。

さて、上記を勝手に今年度の4月から3月までの日付形式でやること
にしますと、
B1: =date(2008, sum(A1:A12)+3, 1)
で表示形式「m"月"」とすればオッケーです。A列に何も入力がない
と昨年度の3月になるのはご愛嬌。

2.
年が確定しないのに曜日や祝日の話は出来ませんね。ちなみに祝日
なんてExcelは関知しませんので、何年何月何日が祝日なのかは、
自分で一覧表でも作って指定する必要があります。そこらをクリア
すれば、分析ツールのworkday関数一発です。A1に質問1の様に日付
形式で入力し、A2は =workday(A1-1,1,祝日一覧)。A3以降は素直に
=workday(A2,1,祝日一覧)。月末にかかりそうなあたりは月が変わ
るなら""を返すとかそもそも前日が""なら無条件で""だとか、その
へんを考慮して =if(A19="","",if(month(workday(A19,1,祝日一覧
))<>month($A$1),"",workday(A19,1,祝日一覧)))な感じで。
    • good
    • 0

1.B1: =IF(A1,SUM(A1:A12)+3-12*A10,"")


2.年は何処に入力しますか?
  同じ2月でも年によって日数や曜日が異なりますよ。
    • good
    • 0

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