- ベストアンサー
エクセルで条件付き書式を使って工程表を作成する方法
- エクセルで工程表(ガントチャート)を作成する際、条件付き書式を使用することで、指定した条件に応じて色づけされる工程表を作成することができます。
- 具体的には、B列に開始日、D列に終了日を入力し、C列とE列に1日の何分割目から開始なのかを入力すると、自動的にF列以降の工程表が色づけされます。
- 例えば、B列とD列に日付を入力し、C列とE列に1日の何分割目から開始するかを入力すると、該当する工程が水色に色づけされます。Excelのバージョンは2010です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
回答:No.1様の方法では、3行目に入力されている日付の中に、B列やD列で指定されている開始日と終了日の日付けが、両方とも含まれている場合以外では色付けが正しく行われません。 例えば、3行目に入力されている日付が2013/3/4から始まっている場合で、且つB列で指定されている開始日が2013/3/1という場合も考えられますし、3行目に入力されている日付が2013/3/15までしか入力されていない場合で、且つD列で指定されている開始日が2013/3/31という場合も考えられます。 その様な場合にも対応させるためには、次の様にされると良いと思います。 F5セルを選択 ↓ [ホーム]タブをクリック ↓ 「スタイル」グループの中にある[条件付き書式]ボタンをクリック ↓ 現れた選択肢の中にある[ルールの管理] をクリック ↓ 現れた「条件付き書式ルールの管理」ダイアログボックスの中にある[新規ルール]ボタンをクリック ↓ 現れた「新しい書式ルール」ダイアログボックスの[数式を使用して、書式設定するセルを決定]をクリック ↓ 「次の数式を満たす場合に値を書式設定」と記されている欄に次の数式を入力 =AND(OR(HLOOKUP(9E+99,$E$3:F$3,1)>$B5,AND(HLOOKUP(9E+99,$E$3:F$3,1)=$B5,COLUMNS($E:F)>=MATCH(9E+99,$E$3:F$3)+$C5-1)),OR(HLOOKUP(9E+99,$E$3:F$3,1)<$D5,AND(HLOOKUP(9E+99,$E$3:F$3,1)=$D5,COLUMNS($E:F)<MATCH(9E+99,$E$3:F$3)+$E5))) ↓ 「新しい書式ルール」ダイアログボックスの[書式]ボタンをクリック ↓ 現れた「セルの書式設定」ダイアログボックスの[塗りつぶし]タブをクリック ↓ 現れた[色]欄をクリック ↓ 現れた色のサンプルの中から、好きな色(例えば水色)の四角形を選択してクリック ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック ↓ 「新しい書式ルール」ダイアログボックスの[OK]ボタンをクリック ↓ 「条件付き書式ルールの管理」ダイアログボックスの「ルール(表示順で適用)」欄が「数式:=AND(OR(...」となっている行の「適用先」欄をクリック ↓ 工程表の中の「条件に従って色付けを行ったり、色を消したりしなければならない全てのセル」を含むセル範囲を、まとめて範囲選択 ↓ 「条件付き書式ルールの管理」ダイアログボックスの[OK]ボタンをクリック 以上です。
その他の回答 (4)
- KURUMITO
- ベストアンサー率42% (1835/4283)
お示しの表でB列やD列の日付のデータはシリアル値で2013/2/5のようにん入力されているとのことですがF3セルから右横の日にちについても2013/2/1のように入力した後でセルの表示形式で d などのようにしているとします。そうでないと関数自体も複雑になりますのでそのようにしてください。 ところで、お示しの表で5行目には作業用の行を挿入します。おしめのデータは6行目になります。 F5セルには次の式を入力して右横方向に例えばDJ5セルまでドラッグコピーします。 =IF(OFFSET(F$3,0,-(MOD(COLUMN(A1)-1,4)))="","",OFFSET(F$3,0,-(MOD(COLUMN(A1)-1,4)))+(MOD(COLUMN(A1)-1,4)+1)*0.1) 作業列が目障りでしたら5行目を選択したのちに右クリックして「非表示」を選択します。 F6セルから例えばDJ1000セルまでを範囲として選択したのちに「ホーム」タブの「条件付き書式」の 「新しいルール」から「数式を使用して書式設定するセルを決定」にチェックをして数式の窓には次の式を入力します。 =AND(F$5>=$B6+$C6*0.1,F$5<=$D6+$E6*0.1) 同じ画面の「書式」をクリックして「塗りつぶし」のタブから水色などを選択してOKします。
下記のような勘弁な式で可能です。 条件付き書式に下記式をコピペして下さい。 =AND(DAY($B5-$F$3)*4+$C5+5<=COLUMN(),DAY($D5-$F$3)*4+$E5+5>=COLUMN())
[No.1]への補遺、 言わずもがなのことだけど、「範囲 F5:DY5 を選択して、…」の前に、結合された2つの範囲 F3:F4 は右方へ(31日の列まで)ズズーッとドラッグ&ペーストしています。
B1: 2013 ← 年 D1: 3 ← 月 範囲 F3:I3 および F4:I4 をそれぞれ[セル結合] F3: =DATE($B1,$D1,INT((COLUMN(A1)-1)/4)+1) 書式: d F4: =F3 書式: aaa 範囲 F5:DY5 を選択して、セル F5 がアクティブになっていることを確認して、次の[条件付き書式]を設定した後で、範囲 F5:DY5 を下方にズズーッとドラッグ&ペースト 数式が =AND(COLUMN(F5)-COLUMN($E5)>=MATCH($B5,$F$3:$DY$3,0)+$C5-1,COLUMN(F5)-COLUMN($E5)<=MATCH($D5,$F$3:$DY$3,0)+$E5-1) パターン色 青 なお、月によって28日以右を非表示にすることも可能だけど、それはご自分でどうぞ。 私は此処までしかやるつもりなし。
お礼
皆様、ご回答ありがとうございました。 同じレイアウトで表を作成頂いて考えて頂いて、 とてもお手間だったと思いますが、 大変助かりました。 本当にありがとうございました。 皆様にBAをお付けしたいところですが、 1人のみとのことでしたので、 こちらのご回答をBAにさせて頂きました。 添付画像の表から、発展させていこうと考えていたのですが、 手を加えても不具合が起こらなかったので、 こちらの回答を選ばせて頂きました。 皆様、ありがとうございました。