• ベストアンサー

セルを自動的に色づけ

現在、エクセルにて工程表を作成しておりますが、行き詰っております。 あるセルに数値を入力したら、自動的に別のセルが色付けされる様な工程表を作成しようとしているのですがうまくいきません。 条件付き書式では1行ならば可能なのですが2行など複数行になるとできません。 例としては以下になります。 例)セルA1に5と入力すると、セルB1~F1までが黄色に色づけされる (※伝わりにくい部分もあると思い画像も添付いたしました。) どうしてもわからなくて質問いたしました。 作成方法、もしくは参考になるサイトなどありましたら、教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 次の様な方法は如何でしょうか?  まず、「作業時間」の列と「1日目の9時」の列との間に列を挿入し、「1日目の9時」の列が元はD列であった処をE列に変更し、新たに挿入した列がD列となる様にして下さい。  次に、D3セルに「作業日」と入力して下さい。  次に、D4セルに次の数式を入力して下さい。 =IF(ISNUMBER($C4),INDEX($1:$1,COLUMN($E$1)+INT((SUM($C$3:$C4)-1)/13)*13),"")  次に、以下の操作を行って、E4セルに条件付き書式を設定して下さい。 【Excel2007よりも前のバージョンの場合】 E4セルを選択   ↓ メニューの[書式]ボタンをクリック   ↓ 現れた選択肢の中にある[条件付き書式]をクリック   ↓ 現れた「条件付き書式の設定」ダイアログボックスの左端の欄をクリック   ↓ 現れた選択肢の中にある[数式が]をクリック   ↓ 「条件付き書式の設定」ダイアログボックスの左から2番目の欄に =AND(COLUMN()-MATCH($D4,$1:$1,0)+1>SUMIF($D$3:$D3,$D4,$C$3:$C3),COLUMN()-MATCH($D4,$1:$1,0)+1<=SUMIF($D$3:$D4,$D4,$C$3:$C4)) と入力   ↓ 「条件付き書式の設定」ダイアログボックスの[書式]ボタンをクリック   ↓ 現れた「セルの書式設定」ダイアログボックスの[パターン]タブをクリック   ↓ 現れた色のサンプルの中にある着色したい色の四角形をクリック   ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック   ↓ 「条件付き書式の設定」ダイアログボックスの[OK]ボタンをクリック 【Excel2007以降のバージョンの場合】 Excelウィンドウの[ホーム]タブをクリック   ↓ E4セルを選択   ↓ 選択されているセル範囲を変えないまま、「スタイル」グループの中にある[条件付き書式]ボタンをクリック   ↓ 現れた選択肢の中にある[新しいルール]をクリック   ↓ 現れた「新しい書式ルール」ダイアログボックスの「ルールの種類を選択して下さい」欄の中にある[数式を使用して、書式設定するセルを決定]をクリック   ↓ 現れた「次の数式を満たす場合に値を書式設定」欄の中に =AND(COLUMN()-MATCH($D4,$1:$1,0)+1>SUMIF($D$3:$D3,$D4,$C$3:$C3),COLUMN()-MATCH($D4,$1:$1,0)+1<=SUMIF($D$3:$D4,$D4,$C$3:$C4)) と入力   ↓ 「新しい書式ルール」ダイアログボックスの[書式]ボタンをクリック   ↓ 現れた「セルの書式設定」ダイアログボックスの[塗りつぶし]タブをクリック   ↓ 現れた色のサンプルの中にある着色したい色の四角形をクリック   ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック   ↓ 「新しい書式ルール」ダイアログボックスの[OK]ボタンをクリック  次に、以下の操作を行って下さい。 E4セルにカーソルを合わせてから、マウスを右クリック   ↓ 現れた選択肢の中にある[コピー]をクリック   ↓ 4行目の中で、E4よりも右側にあるセル範囲(F4~AD4)をまとめて範囲選択   ↓ 選択範囲を示す黒い太枠の内側にカーソルを合わせてから、マウスを右クリック   ↓ 現れた選択肢の中にある[形式を選択して貼付け]をクリック   ↓ 現れた「形式を選択して貼付け」ダイアログボックスの中にある[罫線を除くすべて]と記されている箇所をクリックして、チェックを入れる   ↓ 「形式を選択して貼付け」ダイアログボックスの[OK]ボタンをクリック  次に、D4~AD4の範囲をコピーして、同じ列の5行目以下に貼り付けて下さい。  以上です。

PIKOPIKOPIKO30
質問者

お礼

なんとかやっとできました。 ありがとうございます。

その他の回答 (5)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

 ANo.4です。  添付画像を御覧になられた際に、誤解される恐れがあるかも知れないため、念のために申し挙げておきますが、ANo.4~5の方法では、D列の作業日は自動的に表示されますので、毎回入力が必要となるのは、C列の作業時間だけです。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 ANo.4です。  申し訳御座いません、見落としが御座いました。  ANo.4そのままのやり方では、その日よりも以前に作業が行われていない時間帯が存在しますと、場合によっては表示にずれが生じてしまうおそれがありました。  ですから、D4セルに入力する数式を、次のものと差し替えて下さい。 =IF(ISNUMBER($C4),IF(SUM($C$3:$C3),INDEX($1:$1,MATCH(VLOOKUP(99,$C$3:$D3,2),$1:$1,0)+(SUMIF($D$3:$D3,IF(COUNT($C$3:$D3),VLOOKUP(99,$C$3:$D3,2),$D$3),$C$3:$C3)+$C4>13)*13),$E$1),"")  尚、条件付き書式設定で入力する数式は、変更する必要は御座いません。

回答No.3

工程表ですね。質問文とその添付図を見比べると、セル番地の記述が一致していません。添付図のセル番地に基づいて回答しますね。 ワークシートの構造が質問文の添付図どおりだと、条件式は、非常に長大で難解なものを編み出す必要があります。それよりも日時のシリアル値を使って、次案のような、もっと実用的な方法を採ることをお勧めします。 (1) A~C列において、各行を1行分、上にずらします。4行目が3行目の位置に来ます。 (2) B列とC列の間に3列を挿入。C列がF列に変わります。 (3) 新たにできたG1セルに「10/8」などを入力。すると、年月日のシリアル値が入力されます。表示形式は例えば「2012.10.8」など、他の書式を設定しても構いません。私が添付した図では、結合後のセルに対して、「セルの書式設定>表示形式タブ>ユーザー定義>種類ボックス」に「d"日 ("aaa")"」と指定しました。表示上は年月が表示されていませんが、年月日データです。セルを結合したら、翌日の方向(右)にドラッグし、オートフィル。 (4) G2に「9:00」と入力します。確定後、このセルのユーザー定義書式として、「h」を指定((3)参照)。 (5) G2を右にドラッグしてS列までオートフィル。G2:S2のセル範囲をコピーし、T2:AF2に貼り付け。 (6) C列に開始の日時を入力。「2012/10/8 9:00」というふうに。同様に、E列にも終了の日時を入力。 (7) F列に次式を入力。 =24*(e3-c3) (8) G3:AF6のセル範囲を選択した状態で、条件付き書式の条件式として下の式を入力し、色を指定。「$」の付け方を間違えないよう気を付けて。なお式中の「6」というのは、F列がA列から数えて6番目ということ。「13」というのは、一日の列数が13個ということです。 =($C3<=offset($G$1,0,int((column()-6)/13)*13)+G$2)*(offset($G$1,0,int((column()-6)/13)*13)+G$2<$E3)

PIKOPIKOPIKO30
質問者

お礼

丁寧なご回答ありがとうございます。 色々な方法があるんですね。勉強になりました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

条件付き書式を使って色付けをすればよいのですがその中で使う数式がかなり複雑になってしまいますので作業列を使って対応するのがよいでしょう。 お示しの図で説明します。 AD4セルには次の式を入力して下方にドラッグコピーします。 =IF(C4="","",IF(ROW(A1)=1,0,IF(SUM(C$4:C4)<=13,AD3+C3,IF(AND(SUM(C$3:C3)<=13,SUM(C$4:C4)>13),13,AD3+C3)))) その後にD4セルからAC列の表としての範囲の下方の行までのセルを範囲として選択します。 「ホーム」タブの「条件付き書式」から「新しいルール」を選択します。 表示の画面で「数式を使用して書式設定するセルを決定」にチェックをして下の窓には次の式を入力します。 =AND(COLUMN(A1)>=$AD4+1,COLUMN(A1)<=$AD4+$C4) 同じ画面の「書式」をクリックして「塗りつぶし」のタブから黄色を設定してOKすればよいでしょう。

PIKOPIKOPIKO30
質問者

お礼

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

  • moon00
  • ベストアンサー率44% (315/712)
回答No.1

条件付き書式のみでは厳しいと思います。 例えば、セルA1に5と入力し、セルB1に以下のような数式を入力します。 =IF(COLUMN(B1)-COLUMN($A1)<=$A1,"*","") これをF1(A1に入る数字で塗りつぶしがありうるセルまでコピー) また、縦方向にもコピーします。 これでA列に数字を入れるとその数字の分だけ、*が該当セルに入力されます。 あとは、これを条件付き書式で色付け。(セルの値が*なら色を塗る) *の記号を出したくなければ、フォントの色をセルの色に合わせればOKです。

PIKOPIKOPIKO30
質問者

お礼

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

関連するQ&A