解決済み

エクセルVBAについて教えてください

  • すぐに回答を!
  • 質問No.7335851
  • 閲覧数297
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (2/2)

エクセルVBAを勉強中のものです。
仕事でVBAが必要になり勉強しながら作成をしています。
作成したいのはシフト表になるのですが、1年分をまとめて作成するため、最初に一旦空白セルに、ある一定の規則性を持った文字を入力したいのです。
その規則というのが
・入力する文字はA、B、C、Dの4種のうちどれかである
・同じ文字が入力されたセルが5つ続いたのちは、次の文字に移る(A、A、A、A、A、B、B、B、B…というように)
・夏季休業等、×の付いた部分は入力しない
というものです。
なおかつ、前年度のデータからの引き継ぎで作成するため、スタートがバラバラです。(添付の画像通り)
休暇の列は5連勤した後1休、という規則です。
VBAと関数を併用するのでも構いません。
関数のみでできるのなら、それでも構いません。
初心者の私にぜひ教えていただけないでしょうか…。
よろしくお願いします。

質問者が選んだベストアンサー

  • 回答No.1

ベストアンサー率 47% (1024/2170)

ブロックに分かれているのは月ごとの区分でしょうかね?
残念ながら添付画像が良く見えず、休暇の列とやらも判別できないです・・・。
5連勤と休業日が被った場合の扱いもどうすればいいのやら。

とりあえず、2週分程度で循環しているパターンのように見えます。パターン数が
限られるなら、作業セルを作ってパターン番号だけ入れてやり、そこの値に応じて個人のシフトを
関数なりで判断するってのが手かと思います。
パターン別シフト対応表を別シートに作成しておくのが手っ取り早いですね。


他にも、作業用別シートで一年分縦並びのカレンダー状態を作成して、
関数かマクロで表示シートに各月分の該当データを引っ張ってくる方法も考えられます。
うるう年対応も盛り込んでおいた方がいいですね。


「作業用カレンダーシート」
月日&曜日 | 休業日 | 人1シフト|人2シフト|人3シフト
-----------------------------
 ・
 ・
2/28(火) |      |  F    |  C    | D
2/29(水) |      |  F    |  C    | E
3/1(木)  |      |  A    |  C    | E
3/2(金)  |      |  A    |  C    | E     
3/3(土)  |      |  A    |  D    | E
3/4(日)  |       |  A    |  D    | E
3/5(月)  |      |  A    |  D   | F      
3/6(火)  |      |  B    |  D    | F
 ・
 ・

表示シートには何月 という区分だけタイトル用意しておいて、
マクロ実行で各月に該当する分をカレンダーシートから引っ張ってくる。

年度が変わったらカレンダーシートの上部に前年度ラスト20日分くらいのデータを貼りつけ、休業日の×印をメンテしてからマクロ実行して新年度一年分のシフトデータを作成した上で、表示シートのデータを更新する。
日付が縦一列に並んでいれば、処理も考えやすいですよね?
パターン番号があれば前年度ラストの日のパターン番号があればいいので更新が簡単になるでしょう。


と、こういう流れでどうでしょうかね?
お礼コメント
ms0419-mika

お礼率 100% (2/2)

お返事が遅くなりすみませんでした。
さんざん試行錯誤の上、なんとなく形になりました…
投稿日時 - 2012-03-16 09:40:33
感謝経済
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


感謝指数によるOK-チップ配布スタート!

ピックアップ

ページ先頭へ