[[20180925151352]] 『休日、祝日判定』(お茶缶) ページの最後に飛ぶ

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

 

『休日、祝日判定』(お茶缶)

何度も失礼します。
次のことについて教えて下さい。

1 休日(祝日含む)の判定

2 条件付き書式で色付けしたセルの文字を置き換える。

まず1ですが、シート1に以下のシフト表があり、

B6に関数を入れて6〜8行を表示したいです。
関数を日本語で書くと、

・C3が[夜]、又は、[日]で、かつ休日(祝日含む)の場合、A、違うならB、それ以外は空白。
・C3が[待]で、かつ休日の場合、C、違うならD、それ以外は空白。

になるのですが、weekday関数を組むところでつまずいてしまいまして・・・。

B3=IF(OR(C3="夜",C3="日"),IF(C3=WEEKDEY(C2,2)>5,"A","B"),"")

勤務日の前の日に入るのですが、全てAになってしまいました。
WEEKDEY関数の部分は引用で、正直理解出来ていません。

  行  A   B  C   D  E  F   G   H
   1  日付    1  2   3  4  5   6   7
   2  曜日  月  火  水  木  金  土  日 
   3  田中  夜     非  夜     非  非
   4 佐藤  非  夜     非  日  夜
   5 鈴木     非  夜     非  日  夜

  6 田中         A            A

   7 佐藤  A         C   B      
  8 鈴木     A          B  D

  ※夜は夜勤、日は日勤、非は非番、待は待機、空白は勤務明け。

シート3に祝日表があります。

  A    B    C    D    E
1 年   日付   曜日  祝日名  振替休日
2 2018

17

二つ目の、条件付き書式の置き換えですが、シフト表の待機に関しては最初から組み込まれていないため、シフトが完成してから待機の日付を決めています。
ややこしいですが、シフトを組む人と待機日を組む人が別のためです。シフト作成→待機日設定、となっております。

当初、下の表に日付を入力、シフト表に条件付き書式で色付けし、その色付けしたセルを抽出して文字を[待]に置き換える、というものを考えておりました。
笑様のお陰で色付けはできたのですが、抽出、変換ができず・・・。
調べて見ても、条件付き書式では不可能なのかなと。

シート2、待機日の表
   A   B  C  D
1 田中   
2 佐藤   4
3 鈴木   6

条件付き書式で指定、抽出、置き換えは出来るのか、又は他に日付を指定して置き換える方法があれば教えて欲しいです。

何度も申し訳ないですが、よろしくお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 >B3=IF(OR(C3="夜",C3="日"),IF(C3=WEEKDEY(C2,2)>5,"A","B"),"") 

   ↓ですよ。
   B6=IF(OR(C3="夜",C3="日"),IF(WEEKDAY(C$1,2)>5,"A","B"),"")

 >  A    B    C    D    E 
 >1 年   日付   曜日  祝日名  振替休日 
 >2 2018 
 >17 

 実際に休みになる日が表示されているのはどの列ですか?
 B列 と E列 の2列ですか? 
 もしそうなら面倒なので、1列にまとめてください。

 振替による休日なのか、本来の休日なのか、
 その区別はこの処理をする上においては、重要な意味を持たないです。

 その一本化が終わってから、上掲の数式を休日対応に変更することにしましょう。

 >その色付けしたセルを抽出して文字を[待]に置き換える、というものを考えておりました。 
 「抽出して」と言うのがよく分かりません。

 その色が付いているセルを「待」に代えるんですか?
 それとも、その色が付いているセルがどこにあるかを判定して、別のセルに「待」を表示するんですか?

(半平太) 2018/09/25(火) 21:34


コメントありがとうございます。

>B6=IF(OR(C3="夜",C3="日"),IF(WEEKDAY(C$1,2)>5,"A","B"),"")

  訂正ありがとうございます。

>実際に休みになる日が表示されているのはどの列ですか?

  B列です。一列にまとめます。

>その色が付いているセルを「待」に代えるんですか?

  はい、そのとおりです。
  曖昧な記述で申し訳ないです。やりたいと思っているのが、氏名と日付でセルを
  指定して、そのセルの文字を[待]に置き換える、です。

  よろしくお願いします。
(お茶缶) 2018/09/25(火) 22:09


 >>その色が付いているセルを「待」に代えるんですか? 
 >  はい、そのとおりです。 

 ・・と言うことは、そのセルには何もデータが入っていないですね?

 もし、入っていたら、「元の文字」と「待」をどう折り合いをつけるか、と言う問題に直面します。

 では、入っていなければ旨く行くか言うと、これもまた問題があります。

 条件付き書式で「待」を出すには、今度は何か(数値か文字)が入っている必要があるんです。
 何もデータがない場合は、セルの塗りつぶしは出来ても、文字は表示できません。

 そうなると、代替案としてはマクロを使うしかなくなりますけども・・

(半平太) 2018/09/25(火) 22:27


申し訳ないです。
説明が不十分でした。

>・・と言うことは、そのセルには何もデータが入っていないですね?

 まず上司がシフト表を作成し、そのシフト表をもとに各クルーごと待機日を決めています。
 その待機日は基本的に夜勤や勤務明けには付けないので、非番や日勤日数入れます。

 なので待機に置き換えたいセルには文字が入力されています。
 
 何度もすみません。
(お茶缶) 2018/09/25(火) 22:40


 > その待機日は基本的に夜勤や勤務明けには付けないので、非番や日勤日数入れます。 
 > なので待機に置き換えたいセルには文字が入力されています。 

 では、その「元々ある文字か数値」と「待」はどういう関係になるんですか?

 1.実体は、引続き非番や日勤日数だが、見かけだけ「待」にする

 2.実体も「待」に置き換える。

 3.上記以外(具体的にどうするんですか?)

(半平太) 2018/09/25(火) 23:08


2番を考えています。
ただ、関数に組み込めるのであれば、どちらでも大丈夫です。
シフト表を見たときに待機日が判断でき、式に組めることを求めています。
というより、そんなことも出来るんですね・・・・・・。
(お茶缶) 2018/09/25(火) 23:17

  >2番を考えています。 
  >ただ、関数に組み込めるのであれば、どちらでも大丈夫です。 
  >シフト表を見たときに待機日が判断でき、式に組めることを求めています。 
  >というより、そんなことも出来るんですね・・・・・・。

  すみません。m(__)m

  勘違いされてしまったようですが、

  1番は、条件付き書式で可能です。

  2番は、関数に組み込めないです。
      元々、文字か数値が手入力で入っているんでしょうから、
      数式とは両立しません。

      元データは跡形もなく消えます。(マクロで強制的に書き直す案です)

  >シフト表を見たときに待機日が判断でき、式に組めることを求めています。
  これは、どんな意味なのか分からないので、さらなる具体的な説明が必要です。

(半平太) 2018/09/25(火) 23:28


 お茶缶さんは「待」と言う文字を数式の計算対象にしようとしているんだと思いますが、
 書式で見かけ上出ている文字は、数式で「待」として扱えません。

 代わりに、「条件付き書式の条件が真になっているセル」かどうかを
 数式に判断させることで実現するしかないです。

(半平太) 2018/09/25(火) 23:37


衝突しました。

>シフト表を見たときに待機日が判断でき、

印刷して出している現物と混合していました。忘れてください。
>「条件付き書式の条件が真になっているセル」かどうかを数式に判断させることで実現するしかないです。

もしかして手動で書き換えた方が早いかも知れないですね
(お茶缶) 2018/09/25(火) 23:46


 >>実際に休みになる日が表示されているのはどの列ですか? 
 >  B列です。一列にまとめます。 

 <Sheet3>
  行  __A__  __B__  __C__  ___D___  ____E____ 
   1  年     日付   曜日   祝日名   振替休日 
   2  2018   1/1   ←B2セルから下方に「シリアル値」で入っているものとします。
   3         1/8  
   4         2/11 
   5         :    

 <祝日対応の数式>

   B6 =IF(OR(C3="夜",C3="日"),IF(NETWORKDAYS(C$1,C$1,Sheet3!$B$2:$B$30),"B","A"),"")
                 ~~~~~~~~~~~~~~~~↑~~~~~~~~~~~~~~~~~~~~~ ~~↑~~
                   その日の営業日数が1か0かで判断    A,Bが入れ替わったことに留意

 >もしかして手動で書き換えた方が早いかも知れないですね

 こちらは、結局、何がやりたいことが分かっていないので、
 そこは、お茶缶さんの判断にお任せするしかないです。

 ただ、待機日が数セルしか無ければ話は別ですけども、
 個人的には、手動やマクロで完全に別のデータにしてしまうのは気が進まないです。

 折角、非番や日勤日数が入っていたのに、それが無に帰していまいます。
 特に、後で待機日を変更されたりしたら厄介なことになります。

 条件付き書式で、「色付け」+ "(待)" 付加とすれば、
 4日と6日は見かけ上、こんな風にできます。
            ↓
 <Sheet1>
  行 __A__ _B_ _C_ _D_ ___E___ _F_ ___G___ _H_
   1 日付   1   2   3     4     5     6     7
   2 曜日  月  火  水   木     金  土      日
   3 田中  夜      非   夜         非      非
   4 佐藤  非  夜      非(待)  日   夜       
   5 鈴木      非  夜          非  日(待)  夜
   6 田中          B                         
   7 佐藤  B           B       A             
   8 鈴木      B               A   A         

 そんな風にする必要があるか分かりませんが、既存の情報は温存できます。

 上で述べましたように、数式で見かけ上の「待」は文字として利用できませんが、
 そこが「待」に該当するセルであることは数式で判別できている訳ですから、
 「待」だったらどうしたいのかの説明があれば、対策が立てられる可能性が高いです。

(半平太) 2018/09/26(水) 08:58


 質問2について、表示だけ「待」になればいいのなら

 条件付き書式の「書式」のところに「表示形式」がありますよね。
 そこのユーザー定義に

 ;;;"待"  ← セミコロン3つの後に"待"  

 これでできませんか?
  
 で、「待」だったら ↓ をしたいんでしょ?
 >C3が[待]で、かつ休日の場合、C、違うならD、それ以外は空白。 

 条件付き書式の数式と同じように、COUNTIFで日付があるかどうかで判定

 =IF(COUNTIF(Sheet2!$B1:$D1,C$1),・・・・・・
 
「夜」か「日」かを判定する前に、これを入れます。

 ところで、Sheet1のシフト表は何日分なんですか?
 例示のように7日分だとして、最後のH列は翌日のシフトが分からないので判定できないのでは?
 それはどうするんですか?

 以上です
(笑) 2018/09/26(水) 10:50

 Sheet1、2行目の曜日ですけど
 祝日なら曜日ではなく「祝」と表示でもいいんですかね?

 それでもいいのなら、6行目以下の数式が少しだけ簡単になるかも・・・

 ※年末年始休暇等に「祝」ではマズイですかね? ←12:16追記

 それと冒頭に例示の表、6行目以下に A〜D が入力されてますが、
 こうなってほしいということなんですか?

 以上です
(笑) 2018/09/26(水) 12:09 追記12:16

衝突しました、が先に書いたぶんだけ。スマホなのでとても遅いです・・・

返信が遅れ申し訳ないです。

半平太さん、
>祝日対応の数式

ありがとうございます。

笑さん、

>;;;"待"  ← セミコロン3つの後に"待"

できました! こんな方法もあるんですね・・・。

>条件付き書式の数式と同じように、COUNTIFで日付があるかどうかで判定

 =IF(COUNTIF(Sheet2!$B1:$D1,C$1),・・・・・・
 
>「夜」か「日」かを判定する前に、これを入れます。

すみません、この式はどこに入れればよいのでしょうか。条件付き書式の式に組み込んだところ数式が正しくないと出てしまいました。

あと、とても申し訳ないのですが、一つ初歩的なミスをおかしていまして・・・

・C3が[夜]、又は、[日]で、かつ休日(祝日含む)の場合、A、違うならB、それ以外は空白。
・C3が[待]で、かつ休日の場合、C、違うならD、それ以外は空白。

最初このように記述していましたが、待機の場合は当日が対象でした。そのため、正しくはB3=B3が[待]で、かつ休日の場合、C、違うならD、それ以外は空白。
となります。

なので、待機セルの隣が勤務セルとき、A、BとC、Dがぶつかってしまうんですが、待機日のC、Dを優先させたいです。
関数で優先順位をつけることは可能でしょうか。

(お茶缶) 2018/09/26(水) 16:04


笑さん、表示は祝でも大丈夫です。
A〜Dは仮称です。この回答で大丈夫でしょうか。
(お茶缶) 2018/09/26(水) 16:09

 ↓ にも答えて下さい。
 >ところで、Sheet1のシフト表は何日分なんですか?
 >例示のように7日分だとして、最後のH列は翌日のシフトが分からないので判定できないのでは?
 >それはどうするんですか?

 H列は判定しなくてもいいのなら(7日に「待」があっても)
 6〜8行目は ↓ のようになればいいんですかね?

	A	B	C	D	E	F	G	H
1	日付	1	2	3	4	5	6	7
2	曜日	月	火	水	木	金	土	日
3	田中	夜		非	夜		非	非
4	佐藤	非	夜		待	日	夜	
5	鈴木		非	夜		非	待	夜
6	田中			B				
7	佐藤	B			D	A		
8	鈴木		B			A	C	

 それとも7日だけは「待」かどうかのみで判定するんですか?

 とりあえず以上です
(笑) 2018/09/26(水) 17:07

すみません、抜けていました。
シフト表は1ヶ月表記です。
(お茶缶) 2018/09/26(水) 17:23

 >シフト表は1ヶ月表記です。

 10/1〜31の表だとして、最後の31日の列はどうするんですか、ということですよ?

 11/1が「夜」か「日」かって分かるんですか?
 それとも月末日のみ「待」だけで判定するんですか?

 それと提示した表の6〜8行目、やりたいことはそれで合ってますか?

 以上です
(笑) 2018/09/26(水) 17:47

 追加で確認

 1ヶ月分というのは月初〜月末?

 月によって31日ある月とない月に分かれますよね?
 1行目の日付のところ、数式が入ってるんですか?
 入っているのなら、どんな数式ですか?

 以上です
(笑) 2018/09/26(水) 18:06

遅くなりました。

>10/1〜31の表だとして、最後の31日の列はどうするんですか、ということですよ?

すみません、隣にデータがない場合は空白を返すからそれでよいと考えておりました。
例表が不適切でした。

>それと提示した表の6〜8行目、やりたいことはそれで合ってますか?

もしかして、別シートに移した方がよいですか?
内容としてはこれで合っています。

> 1ヶ月分というのは月初〜月末?

月初めから月末です。
数式は入っていないです。シリアル値をオートフィルでコピーしているだけです。
(お茶缶) 2018/09/27(木) 06:52


 月末日をどうするのか未だによく分かりませんが、とりあえず・・・

 ・Sheet2に日付を入力するのは、B〜D列
 ・Sheet3のB列に祝日その他(土日以外の休日)の日付をシリアル値で入力

 ■曜日(2行目)で休日判定

 B2(曜日)=IF(COUNTIF(Sheet3!$B:$B,B1),"祝",TEXT(B1,"aaa;;"))

 AF2までコピー

 B6 =IF(COUNTIF(Sheet2!$B1:$D1,B$1),IF(OR(B$2={"土","日","祝"}),"C","D"),IF(OR(C3={"夜","日"}),IF(OR(C$2={"土","日","祝"}),"A","B"),""))

 下と、右にAF列までコピー

 前にも言ったように、祝日以外の日付(夏季休暇、年末年始休暇等)も「祝」と表示されます。

 ■日付(1行目)で休日判定

 B2(曜日)=TEXT(B1,"aaa;;")   AF2までコピー

 B6 =IF(COUNTIF(Sheet2!$B1:$D1,B$1),IF(WORKDAY(B$1-1,1,Sheet3!$B$2:$B$100)<>B$1,"C","D"),IF(OR(C3={"夜","日"}),IF(WORKDAY(B$1,1,Sheet3!$B$2:$B$100)<>C$1,"A","B"),""))

 下と、右にAF列までコピー

 ・ほとんど検証してません。そちらでお願いします
 ・月末日に「待」がある場合、「C または D」が表示されます
 ・1行目の日付を数式にした場合、1行目が空白かどうかの判定を追加する必要があると思います

 以上です
(笑) 2018/09/27(木) 12:47

本当に遅くなりました。
申し訳ないです。今パソコンの調子が悪く、頻繁に落ちます。
検証に時間がかかってますので、まとまったら投稿します。
ありがとうございます。
(お茶缶) 2018/09/28(金) 14:12

遅くなりました。

改めてありがとうございます。

試してみた結果、まず休日判定は曜日で行うことにしました。

検証した結果ですが、思っていた通りに動きましたが、こちらが見落としていたパターンが見つかりました。申し訳ないです。
見落としていたのは待機日でして、非番の待機と日勤の待機が一緒ではなかったのを忘れていました。

シート2の待機日一覧を以下のように変更しました。

・待機日を非番と日勤の二つの表に分ける。
・非番待機日をB1からE1、日勤待機日をF1からI1に(枠を年のため一日多く取りました)
・条件付き書式の表記を待(非)、待(日)に。

非番の待機と日勤の待機の違いですが、

・非番待機日

 B6=B3が[待(非)]で、かつ休日の場合、前の日(一つ左のセル、B2)はC、違うなら(平日なら)B3=D、それ以外は空白。

・日勤待機日

 B6=B3が[待(日)]の場合、前の日(一つ左のセル、B2)はC(休日に日勤がないことを忘れていました)

だいぶ変化してしまい申し訳ないです。
出来れば、式の詳細も教えて欲しいです。ネストの部分が全く理解できず、弄ることすら不可能でした・・・。

よろしくお願いします。
(お茶缶) 2018/09/28(金) 20:44


 >前の日(一つ左のセル、B2)
 
 B列の「一つ左のセル」ならA列では? なぜB2?

 ↓ の B6:D8 がどうなればいいんですか?

	A	B	C	D
1	日付	1	2	3
2	曜日	土	日	月
3	田中	待(非)		
4	佐藤			待(非)
5	鈴木			待(日)
6	田中			
7	佐藤			
8	鈴木			

 とりあえず以上です
(笑) 2018/09/29(土) 00:33

>B列の「一つ左のセル」ならA列では? なぜB2?

すみません、その通り、A列の間違いです。

	A	B	C	D
1	日付	1	2	3
2	曜日	土	日	月
3	田中	待(非)		
4	佐藤			待(非)
5	鈴木			待(日)
6	田中	空白		
7	佐藤			D
8	鈴木			C

(お茶缶) 2018/09/29(土) 01:27


 D7が「D」になっているのは
 D4が「待(非)」で、かつ、その日(3日)が月曜で平日だからですか?

 だとすると当日だけが対象ですよね?
 前の日云々の話はどう関係するんですか?

 D7が「D」なら、B6は「C」では?
 なぜ空白なんですか?

 以上です
(笑) 2018/09/29(土) 11:12

待(非)で休日だと前日がC、平日は当日がD、になります。  

おそらく滅茶苦茶説明が下手で、言いたいか伝わっていないと思います。

またまとめて投稿します。

(お茶缶) 2018/09/29(土) 16:25


 確認

 2行目の曜日ですけど
 土日祝はまとめて「休」と表示でもいいですか?

 以上です
(笑) 2018/09/29(土) 18:49

ありがとうございます。

>土日祝はまとめて「休」と表示でもいいですか?

大丈夫です。
(お茶缶) 2018/09/29(土) 19:52


同僚から下のパターンが抜けてると指摘を受けました。
これは前の式に組み込むのではなく、一部のクルーだけこの動きをする、ということです。人によって数式を使い分けようと考えています。

纏められないので箇条書きにします。

・B6=B3セルが勤務(夜勤、日勤)の場合、A
・B6=B3セルが待(非)で、休日の場合、A、平日の場合、B
・B6=B3セルが待(日)の場合、A
・B6=B3セルが待機日の場合、右隣のセルにA、Bは入らない。

>B6 =IF(COUNTIF(Sheet2!$B1:$D1,B$1),IF(OR(B$2={"土","日","祝"}),"C","D"),IF(OR(C3={"夜","日"}),IF(OR(C$2={"土","日","祝"}),"A","B"),""))

この式のC列をB列に換えて見ましたが、

	A	B	C	D
1	日付	1	2	3
2	曜日	土	日	月
3	田中	待(非)	夜	
     	A	A

とAが続いてしまいました。

本当は

	A	B	C	D
1	日付	1	2	3
2	曜日	土	日	月
3	田中	待(非)	夜	
     	A	空白

のように、A、空白、の形にしたいのですが・・・。

前の日勤待機日と非番待機日の区別と併せて、これで全部、のはずです。

よろしくお願いします。

(お茶缶) 2018/09/29(土) 20:40


 >日勤待機日と非番待機日の区別

 ↑ よく分かりません。特に日勤待機日。

 >B6=B3が[待(日)]の場合、前の日(一つ左のセル、B2)はC

 前日が「C」なんですよね?
 
「2018/09/29(土) 01:27」に記入してもらった表では
 D8、つまり当日が「C」になってますけど?

 前日の C8 が「C」では?

 >人によって数式を使い分けようと考えています。 

 2種類のパターンがあるってこと?

 で、何を回答したらいいんですか?
 もしかして2種類とも?

 以上です
(笑) 2018/09/29(土) 22:30

	A	B	C	D
1	日付	1	2	3
2	曜日	土	日	月
3	田中	待(非)		
4	佐藤			待(非)
5	鈴木			待(日)
6	田中	空白		
7	佐藤			D
8	鈴木		C

すみません、指摘の通り前日がCです。

もう一つの数式に関しては、上の数式を換えてやってみます。
(お茶缶) 2018/09/30(日) 09:08


 曜日(2行目)
 B2 =IF(B1="","",IF(WORKDAY(B1-1,1,Sheet3!$B$2:$B$100)<>B1,"休",TEXT(B1,"aaa")))

 AF2までコピー

 ■パターン1
 B6 =IF(OR(COUNTIF(Sheet2!$F1:$I1,C$1),AND(C$2="休",COUNTIF(Sheet2!$B1:$E1,C$1))),"C",IF(AND(B$2<>"休",COUNTIF(Sheet2!$B1:$E1,B$1)),"D",IF(OR(C3="夜",C3="日"),IF(C$2="休","A","B"),"")))

 下と右にコピー

 ■パターン2
 B6 =IF(COUNTIF(Sheet2!$B1:$I1,B$1-1),"",IF(COUNTIF(Sheet2!$B1:$E1,B$1),IF(B$2="休","A","B"),IF(OR(B3="夜",B3="日",COUNTIF(Sheet2!$F1:$I1,B$1)),"A","")))

 下と右にコピー

 よく分からないままの想像上の産物です。
 検証してません。

 以上です
(笑) 2018/09/30(日) 10:16

笑さん、私の分かりにくい説明から汲み取って頂きありがとうございます。

パターン2ですが、

>B6=B3セルが待(日)の場合、A

この部分だけ"B"になります。

パターン1は、

非番待機日で平日の場合は大丈夫ですが、休日の場合、下のようになります。

C3=待(非)、D3=夜の場合、待機日の前日、B6=C、勤務日の前日、C6=空白、がC6=A、Bになる。

日勤待機日(平日)の場合も同様に、C6セルに次の日の勤務のA、Bが入ります。

非番待機日(平日)の場合は、問題なく、待機日当日に"D"が入ります。

出来れば、数式、ネスト部分の解説をいただければ・・・。
よろしくお願いします。

(お茶缶) 2018/09/30(日) 15:48


 >パターン2ですが、 
 >>B6=B3セルが待(日)の場合、A 
 >この部分だけ"B"になります。 

 こっちでは「A」になります。
 数式も条件付き書式も間違ってないのなら
 Sheet2の「B1:E1」と「F1:I1」に同じ日付が入ってませんか?

 >パターン1は、 
 >非番待機日で平日の場合は大丈夫ですが、休日の場合、下のようになります。 
 >C3=待(非)、D3=夜の場合、待機日の前日、B6=C、勤務日の前日、C6=空白、がC6=A、Bになる。 
 >日勤待機日(平日)の場合も同様に、C6セルに次の日の勤務のA、Bが入ります。 

	A	B	C	D
1	日付	1	2	3
2	曜日	休	休	月
3	田中		待(非)	夜
4				
5				
6	田中	C	B

 上のようになるってことですか? それならこっちの意図した通りですけど?

 >C3が[夜]、又は、[日]で、かつ休日(祝日含む)の場合、A、違うならB、それ以外は空白。

 C6から見れば、D3が「夜または日」・・・なので ↑ に該当するのでは?

 で、C6は空白が正解ってこと?
 どういう場合に空白にするのか、どこかに書いてありましたかね?
 書いてあっても、もう一度改めて説明してください。
 読んでも理解できなかったということなので。

 ↓ はパターン2の話ですよね?(上記に該当しませんけど)
 >B6=B3セルが待機日の場合、右隣のセルにA、Bは入らない。

 以上です
(笑) 2018/09/30(日) 23:27

遅くなりました。

パターン1

B6=C3が勤務(夜、日勤)の場合、休日ならA、平日ならB。
B6=C3が待機日の場合、非番待機日で休日ならC、B6=B3が非番待機日で平日ならD。
B6=C3が日勤待機日の場合、B6=B
それ以外は空白。
平日の非番待機日のDは勤務前日のA、Bよりも優先する。

パターン2

B6=B3が勤務の場合、A(休日平日関係なし)
B6=B3が待機日の場合、非番待機日で休日ならA、平日ならB。
B6=B3が待機日の場合、日勤待機日ならA。
待機日の次の日が勤務の場合、勤務当日にAは入らない。

以上です。
よろしくお願いします。
(お茶缶) 2018/10/01(月) 16:37


 こっちが聞いてるのは「2018/09/30(日) 23:27」に書いた以下の2点です。

 1)パターン1、非番待機日で休日の場合について

 2)パターン2、日勤待機日について

 もう一度「2018/09/30(日) 23:27」のコメントを最初からよく読んでください。

 ■追加でパターン1 について

 a)2018/09/28(金) 20:44
   日勤待機日 
   B6=B3が[待(日)]の場合、前の日(一つ左のセル)はC

 b)2018/10/01(月) 16:37
   B6=C3が日勤待機日の場合、B6=B

 a)は「C」
 b)は「B」
 どっちが正しいんですか?
 
 たとえ「B」となるべきところが「C」になったとしても
 数式のどこを修正すればいいか見当もつきませんか?

 ↓ の式の意味は分かりますか?
 =IF(A1="○",100,IF(B1="○",80,IF(C1="○",60,"")))

 シフト表の数式はダラダラと長いだけで上のと同じことですよ。

 以上
(笑) 2018/10/02(火) 13:24

笑さん、ありがとうございます。

>1)パターン1、非番待機日で休日の場合について

B6=C3が待機日の場合、非番待機日で休日ならC、B6=B3が非番待機日で平日ならD。
です。

>a)は「C」

 b)は「B」
 どっちが正しいんですか?

すみません、今まで勤務の前日AB、待機日CDと分けていましたが、同じ結果が出る部分があったので統合していました。勝手に変えて、しかも変えたことに気づかず申し訳ないです。

>2)パターン2、日勤待機日について

B6=B3が待機日の場合、日勤待機日ならA、です。

やはりどうしてもここだけがBになりました。もう一度クリアにして確認します。ただ、現在エクセルを使える環境ではないので明日以降になります。申し訳ありません。

>↓ の式の意味は分かりますか?

 =IF(A1="○",100,IF(B1="○",80,IF(C1="○",60,"")))

もしA1が○なら100、もしB1が○なら80、もしC1が○なら60、それ以外は空白。
すみません、これで合っていますか?
正直、if関数と他の関数の組み合わせてが、式を見ても理解するのが難しいです。
(お茶缶) 2018/10/02(火) 18:25


 「2018/09/30(日) 23:27」の質問にまだ答えてもらってません。
 もう一回だけお聞きします。これが最後です。

	A	B	C	D
1	日付	1	2	3
2	曜日	休	休	月
3	田中			夜
4	佐藤		待(非)	夜
5				
6	田中		B	
7	佐藤	C		

 1)C6は「B」、これは合ってますか?
   では、その下、C7は「B」ではなく「空白」なんですか?
  
  だとすれば、なぜ「B」ではなく「空白」になるのか、と質問してるんです。
  この条件についてお答えください。

 2)パターン1 の日勤待機日について
  結局「B」なのか「C」なのか、どっちなんですか?

 3)パターン2 の日勤待機日について
  Sheet2を確認しましたか?
  同じ人の非番待機日と日勤待機日に、同じ日付が入ってませんか?

 以上
(笑) 2018/10/02(火) 23:47

1)について。

すみません、読み返すとその部分の記述がなかったです。申し訳ありません。
2018/10/01(月) 16:37 のパターン2の最後、

>待機日の次の日が勤務の場合、勤務当日にAは入らない。

これと同じで、パターン1の場合、

待機日の次の日が勤務の場合、勤務前日にA、Bは入らない、となります。

2)について。

Bになります。

3)について。

一から作り直して式を入れたところ、Aになりました。本当に申し訳ないです。

本来一度に伝えることを何度も繰り返してしまい申し訳ありませんでした。
(お茶缶) 2018/10/03(水) 09:14


 ■パターン1
 B6 =IF(COUNTIF(Sheet2!$F1:$I1,C$1),"B",IF(AND(C$2="休",COUNTIF(Sheet2!$B1:$E1,C$1)),"C",IF(AND(B$2<>"休",COUNTIF(Sheet2!$B1:$E1,B$1)),"D",IF(AND(COUNTIF(Sheet2!$B1:$I1,B$1)=0,OR(C3="夜",C3="日")),IF(C$2="休","A","B"),""))))
 
・下と右コピー(検証してません)
・同じ人が2日連続で待機日なんてことはない、ということいいですか?

 >=IF(A1="○",100,IF(B1="○",80,IF(C1="○",60,"")))
 >もしA1が○なら100、もしB1が○なら80、もしC1が○なら60、それ以外は空白。

 ↑ で合ってます。
 A1とB1、両方とも○なら100(A1が優先)

 前にも書きましたが、1行目の日付を数式で出すように変更した場合、
 条件付き書式の数式も含めて少し手を加える必要がある
 ということを頭の片隅にでも置いといてください。

 以上
(笑) 2018/10/03(水) 15:37

笑さん、ありがとうございます。

上の式で完成できました。分かりにくい説明で大変ご迷惑おかけしました。

本来にありがとうございます。
(お茶缶) 2018/10/03(水) 16:43


コメント返信:

[ 一覧(最新更新順) ]


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