質問を締め切ってしまったのでもう一度・・・

月を変えると曜日が変わる様にしているのですが、
同じく月を変えると、シフトが変わる様にしたいのですが
解かりません。

ご解答いただければ大変有り難いです。
シフトそれぞれ、BBAAとなっています。

現在の各セルの数式の表示は

C7セルの所では、=DATE(A5,A8,1)

C8セルの所では =IF(MONTH(C7)>$A$8,"",C7)

C9セルの所では =IF(C8="","",CHOOSE(WEEKDAY(C8,1),"日","月","火","水","木","金","土"))

と、それぞれ数式が表示されてます。

お時間がある時にでもご解答頂けると幸いです。

宜しくお願い致します。

「続・勤務表」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (3件)

今回もまた質問するなと思っていた。


下記をよく読んで質問の内容に補足してみて。
質問前半に書いてあることなど、日付関連のことで、こんなの回答者には常識で、本質問の説明の足しにならない。
ーー
前回(前前回のこと)の質問のときも同じだが、配置について、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休休」の
コピー貼り付け(または+ハンドルを引っ張る)をして整えるのが、普通の技量レベルの人には適当な方法でないか。
ーー
個人の勤務サイクル優先で考える場合の話で、
人手でやる場合、少し役立ちそうなヒントを挙げてみる。
ツール
オプション
「ユーザー設定リスト」のタブを選択
縦に






を定義
ーー
各従業員行で
スタート日(その人の1日)でBとかを入れる.
そのセルで+ハンドルを出して、右方向に引っ張る。
(+を月末日まで引っ張る動作を一気にやらないと、途中列でマウスを緩めるなど、1休みしてはならない)
この操作を十強引分の行で人数分する。
または
人数分を31+6日分手本として、上記操作を使って作っておいて、
その月1日(または月末の終わり状態から)のスタート状態を探してそれから月日数の列数分コピペして
新しい月の1日から右列に貼り付ける。
こういう手もある。
    • good
    • 0
この回答へのお礼

大変失礼致しました。

ご回答ありがとうございます。

お礼日時:2011/04/13 20:13

質問履歴は非公開になっていますので、関連する質問はリンクを張るようにお願いします


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))
右へ下へオートフィル
「続・勤務表」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2011/04/13 17:30

シフトを組むアルゴリズムを書いていただかないと、式だけでどうこうなるものではありませんよ。

単純に”BBAA□□”(□はブランク)で連続するなら、日を6で割ったときの余りの数で判断すれば良いと思いますが、田中さんのシフトがこのアルゴリズムに合っていないので、どういうふうにシフトを組もうとされているのが、見えません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2011/04/13 20:14

このQ&Aに関連する人気のQ&A

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


人気Q&Aランキング