[[20030924173831]] 『当番表を作成したい』(キョウ) >>BOT

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

 

『当番表を作成したい』(キョウ)

はじめまして。
いつも困ったときにとてもお世話になっています。

早速ですが当番表の作成についてお知恵を貸してください。
4人の人数で順番に当番をしています。

月の最初の人を確定すれば自動的に
担当者が表示されるようにしたいのですがうまくいきません。

途中まで作成したカレンダーは以下のとおりです。

[[20030921090345]]『曜日を自動で』(超初心者)

[[20030514232746]]『カレンダーの曜日振り分け』(犬吉)

を参照しました。

A1には【2003】

A2には【データーメニューにて月表示】

A3には【タイトル行】日(A列)/曜日(B列)/担当(C列)】

A4にはそれぞれ日にちが入っています。

また、条件付書式で土曜日と日曜日に網掛けをしています。
残念ながら祝日は手動で色をつけてます。

土日には以下の式で"−"を表示しています。

=IF(OR($B4="土",$B4="日"),"-","")
この式をもとに平日に
山田/佐藤/鈴木/田中という4名を順番に
表示させたいのですがうまくいきません。

C4に山田と手入力し、C5に
IF(C4="山田","佐藤","")
という式を入れていけばうまく表示できるのですが
土日が挟まる為、行き詰まってしまいました。

会社のExcelは一括DLなので追加でインストールするような
関数は使用できません。

なんとか組みあわせ等でうまくいかないでしょうか?
よろしくお願いします。


 C列ですが、担当表示ではなく、「土」「日」「休日」の場合「−」が入るのみにします。
 D列に担当決めのための番号を入れます。
 E列に担当を表示します。
 担当の山田/佐藤/鈴木/田中はJ1:J4あたりに入れておき、H1:H4に1〜4を入れておきます。

 D4へ担当者番号を入れます。
 D5へは =IF(C5="",IF(VLOOKUP(100,$D$4:D4,1)=4,1,VLOOKUP(100,$D$4:D4,1)+1),"")
 とし、下方へコピーします。
 これで土日休日が"−"表記であるセルの隣を飛ばして循環した連番が入るはずです。

 あとはこの番号を使ってE列に担当名をもってきます。
 E4 =VLOOKUP(D4,$H$1:$J$5,2)

 休日の色を変えるには、まず休日をL1:L20あたりに一覧にし、条件付書式で
 「数式が」「=MATCH(DATE($A$1,$A$2,A4),$L$1:$L$20,0)」
 書式でフォントの色を指定、です。(kuro)

 上記一部を少し修正しました(kuro)
 ついでにC列に「−」が入る式を。休日リストがL1:L20にあるものとします。
 D5  =IF(AND(C5<>"土",C5<>"日",ISERROR(MATCH(B5,$L$1:$L$20,0))),"","-")


 kuroさん、早速の回答ありがとうございました。

 担当者を表示するところまではうまくいったのですが
 C列に「−」を表示する式がうまくいきません。
 多分、休日リストと休日がマッチしないからだとは思うのですが
 A1に2003 A2にデーターメニューにて月表示
 A4にDATE($A$1,A2,1)がA5にはA4+1という式が入っています。
 この場合、L1:L20に設定する休日はどのように入力するようにしたら
 ベストでしょうか?
 現在は通常の2003/9/25という入力になってます。
 式を入れるのはC列で大丈夫ですか?
 C列に=IF(AND(B4<>"土",B4<>"日"),"","-")といれるとちゃんと土日に「−」表示されます。

 また、D5に入れた式の意味がわからないので今後のために教えていただけると助かります。
 =IF(C5="",IF(VLOOKUP(100,$D$4:D4,1)=4,1,VLOOKUP(100,$D$4:D4,1)+1),"")この分です。
 そのまま、書いてうまくいったことはいったのですがこれから他の事にも使えそうですので
お手数ですが宜しくお願いします。
 (100の意味が特にわかりません。)

 以上、お願いします。


 すみません。列名を間違えていました。

 =IF(AND(B4<>"土",B4<>"日",ISERROR(MATCH(A4,$L$1:$L$20,0))),"","-")
 の式をC4に入れてください。m(_"_)m
 また、L1:L20に入れた休日一覧は、昇順に並べておいてください。

 =IF(C5="",IF(VLOOKUP(100,$D$4:D4,1)=4,1,VLOOKUP(100,$D$4:D4,1)+1),"") ですが、
 VLOOKUP(100,$D$4:D4,1)で自分の真上までの範囲にある最終表示データを調べています。
 100という数値は担当者番号にない大きい数値なので、検索の型を指定していないVLOOKUPは
 範囲内最後のデータを最大値と判断して返してきます。
 (通常の使い方の場合は、指定なしだと検索範囲はデータが昇順にソートされていなければ、
 正しいデータをひっぱってこられません)
 検索範囲にある最大値よりも大きい数値であればよかったので10でも20000でもいいのですが、
 担当者が増えた場合を考えて適当に100としました。
 この最終の値がもし4ならば循環させたいので1と表示させ、そうでないなら1を足した数値
 を返すような式になっています。(kuro)


 kuroさん、詳しい説明ありがとうございました。
 特に、最後の検索の方を指定しないVLOOKUPはこれからも約に立ちそうです。

 おんぶに抱っこで申し訳ないのですが休日の色を変える条件書式で行き詰まってしまいました。
 リスト内をすべて指定し、
 条件1 数式が =$B4="土"
 条件2 数式が =$B4="日"
 条件3 数式が =MATCH(DATE($A$1,$A$2,A4),$L$2:$L$20,0)
 と設定したところ、土日はそれぞれ色が変わるのですが
 条件3が変化しません。
 条件3は休日リストとマッチするものという関数だと思うのですが
 これもリストの表示と関係あるのでしょうか?
 それとも条件1,2の関係でしょうか?

 ひとつずつ、教えていただくような手間を取らせて申し訳ありませんが
 宜しくお願いします。

 > A4にDATE($A$1,A2,1)がA5にはA4+1という式が入っています。
 ということなので、条件付書式の式でDATE関数を使う必要はありません。
 初めにご紹介した式はA4以降のセルにあるのは「1」とか「2」という「日にち」だけだと
 思って書いたものでした。勘違いが多くてすみません。。
 =MATCH(A4,$L$2:$L$20,0)
 としてみてください。(kuro)


 kuroさん、お返事遅くなりましたがありがとうございました。
 上手くいきました。
 その後、すこし改良して前月の最後の当番を記入する欄を作成することにしました。
(月の最初が休日だと計算式がずれてしまったので)
 なかなか上手く出来ませんでしたがなんども解説を読ませていただき
 なんとか完成させました。
 下手な本よりも本当にわかりやすいので今後も宜しくお願いします。
 本当に本当にありがとうございました。

コメント返信:

[ 一覧(最新更新順) ]


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