- 締切済み
続・勤務表
質問を締め切ってしまったのでもう一度・・・ 月を変えると曜日が変わる様にしているのですが、 同じく月を変えると、シフトが変わる様にしたいのですが 解かりません。 ご解答いただければ大変有り難いです。 シフトそれぞれ、BBAAとなっています。 現在の各セルの数式の表示は C7セルの所では、=DATE(A5,A8,1) C8セルの所では =IF(MONTH(C7)>$A$8,"",C7) C9セルの所では =IF(C8="","",CHOOSE(WEEKDAY(C8,1),"日","月","火","水","木","金","土")) と、それぞれ数式が表示されてます。 お時間がある時にでもご解答頂けると幸いです。 宜しくお願い致します。 。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
今回もまた質問するなと思っていた。 下記をよく読んで質問の内容に補足してみて。 質問前半に書いてあることなど、日付関連のことで、こんなの回答者には常識で、本質問の説明の足しにならない。 ーー 前回(前前回のこと)の質問のときも同じだが、配置について、AB休のサイクルで「どういうルール でやりたいのか」を書かず、表だけコピペして、意味内容は推測せよ、という 質問者として、手抜きをやっている。(3人の場合はみな同じようなルールで繰返しで、 各日において、AB休が各々1人だけに出来た。これは1ヶ月だけなら関数でできて、 回答しようとしたが、締め切り後だった。ただその際翌月はどうするのか気なっていたが) またこの質問は、質問者が考えて、色々試行の跡もなく、丸投げになっている。 ーー まず (A)ルールが書いてない (1)人ごとにBBAA休休を繰返す (2)従業員全員をみて、A,B、休みの、日ごと人数はどう考えていくのか 各人のルールを優先して、その日に何人出勤しようが、Bが何人になろうが、休みは何人になろうが良いのか? (3)個人ごとで考えて、月初1日からは、前月中のサイクルの続きとして考えたいのか また月末日1日だけでは、サイクルの何処で終わったかの情況を捕らえられないと思うので、難しいと思う。 ーーー (B)エクセルで処理する、方式が書いてない エクセルでは (1)操作(コピペなど) (2)関数式 (3)VBAプログラム (4)特別な機能(本件と関係ない例えだが、ピボットテーブルや統合といった複雑な機能=操作) (5)特別ソフト(アドイン・流通しているソフトなど) があるが、(2)の関数が念頭にあるのか? (2)は、式の複写を活用する(活用できる)ことが、それを使う、ポイントと言えるが、基本的に関数式は式が複雑になって 、質問者に理解できない式になる恐れがある。 前回質問の回答でも、式の内容を理解できず、そのままコピペしてやってみて、 うまくいきませんと、テストの採点官のように言っていないか。 回答の関数の、仕組みを理解して、自分の場合に当てはめて多少修正できる力が無ければ、質問して、 回答をもらっても、役に立たない。それで何度も質問を繰返すことになる。 また、本件はVBAでやても難しい課題と思う。 ーーー この方式をエクセルではじめたスタート月の1日の開始状態(A,B、休)で、 その後のサイクルが規制(決定)される。 その月の月末日または月末数日の状態から、当月1日(以降)のタイプを割り出したいのか。 1人について6種類の勤務状態があるから、月末においても人により6種類あり、 それを各月バラバラの月日数で割り出すのはむつかしい(式が複雑になる)と思うが。 ーーー 人間(質問者)が、月末の繰り返し情況を判断して、そこから以降休休までをコピペし、月中は「BBAA休休」の コピー貼り付け(または+ハンドルを引っ張る)をして整えるのが、普通の技量レベルの人には適当な方法でないか。 ーー 個人の勤務サイクル優先で考える場合の話で、 人手でやる場合、少し役立ちそうなヒントを挙げてみる。 ツール オプション 「ユーザー設定リスト」のタブを選択 縦に B B A A 休 休 を定義 ーー 各従業員行で スタート日(その人の1日)でBとかを入れる. そのセルで+ハンドルを出して、右方向に引っ張る。 (+を月末日まで引っ張る動作を一気にやらないと、途中列でマウスを緩めるなど、1休みしてはならない) この操作を十強引分の行で人数分する。 または 人数分を31+6日分手本として、上記操作を使って作っておいて、 その月1日(または月末の終わり状態から)のスタート状態を探してそれから月日数の列数分コピペして 新しい月の1日から右列に貼り付ける。 こういう手もある。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
質問履歴は非公開になっていますので、関連する質問はリンクを張るようにお願いします C8セル =DATE(A5,A8,1) D8セル =IF(C8="","",IF(DAY(C8+1)=DAY(C8)+1,C8+1,"")) 右へオートフィル セルの書式設定 - ユーザー定義 - 種類 d とすることで日付だけ表示させる C9セルは =IF(C8="","",TEXT(C8,"aaa")) H:K列にデータのもととなる表があるとする 添付図参照 C10セルに =""&INDEX($I$2:$K$9,MATCH(C$8,$H$2:$H$9,0),MATCH($A10,$I$1:$K$1,0)) 右へ下へオートフィル
お礼
ありがとうございました。
- nabe3desu
- ベストアンサー率46% (253/550)
シフトを組むアルゴリズムを書いていただかないと、式だけでどうこうなるものではありませんよ。単純に”BBAA□□”(□はブランク)で連続するなら、日を6で割ったときの余りの数で判断すれば良いと思いますが、田中さんのシフトがこのアルゴリズムに合っていないので、どういうふうにシフトを組もうとされているのが、見えません。
お礼
ご回答ありがとうございました。
お礼
大変失礼致しました。 ご回答ありがとうございます。