- ベストアンサー
エクセルの進捗表作成について
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
> 関数とかマクロは使わないんですよね? はい たとえば 添付された画像だと(1,2,3…は日付2019/8/1から2019/9/2まで入れて表示をdにしてください) 色を付けたい範囲を全て選択して H6:AN23 の範囲とかです 「数式を使用して」で以下のようにすれば(それぞれひとつずつ5個作ります) =AND($B6<=H$5,$C6>=H$5) 書式設定を黄色 =$D6=H$5 書式設定を緑 =AND($E6<=H$5,$F6-1>=H$5) 書式設定を青 =AND($F6<=H$5,$G6-1>=H$5) 書式設定をオレンジ =$G6=H$5 書式設定を赤 画像のようになると思います。
その他の回答 (7)
- imogasi
- ベストアンサー率27% (4737/17069)
#7です。 #7の回答の後半が、エクセル関数の形式を使ったためゴチャゴチャしていて、気に食わなかったので、改良してみました。 本件は 「..FormatConditions.Add(xlCellValue, xlBetween,..」の利用です。 ーー ・A1:G1 製番 マーシャ開始 マーシャ終了 払い出し 着工 試験 出荷 の見出し文字列を入れる ・H1セルに2019/8/1 日付を入れる(日付シリアル値) ・H1セルでプラス+ハンドルを出して右方向にAW1まで引っ張る(1日刻みの日付が入る) ・H1:AW1を範囲指定して、AW1でプラスハンドルを出して、下方向に引っ張る。 本件では、第7行目までのサンプルとする。 結果H2:AW7までのセルには日付が入る。 ーー データ例 ・核心のデータが下記の通り A1:G7 製番 マーシャ開始 マーシャ終了 払い出し 着工 試験 出荷 ABC101100 8/1 8/5 8/6 8/7 8/15 9/1 ABC101103 8/3 8/7 8/7 8/8 8/16 9/3 ABC101105 8/6 8/9 8/9 8/10 8/17 9/7 ABC101108 8/7 8/11 8/11 8/12 8/20 9/7 ABC101110 8/10 8/15 8/17 8/19 8/26 9/10 ABC101112 8/11 8/15 8/16 8/17 8/25 9/11 ーー 標準モジュールに、下記VBAコードをコピペ。 Sub test03() '--条件付き書式の削除 Range("H2:Aw11").FormatConditions.Delete '--- Dim fc As FormatCondition '--色の指定テーブル cl = Array("", 4, 6, 7, 8, 22, 47) '--- For i = 2 To 11 '2行から10行まで繰り返し For j = 2 To 7 'B列からG列まで繰り返し If j <> 7 Then 'B-F列 Set fc = Range(Cells(i, "H"), Cells(i, "Aw")).FormatConditions.Add(xlCellValue, xlBetween, Cells(i, j), Cells(i, j + 1) - 1) fc.Interior.ColorIndex = cl(j - 1) Else '---G列 Set fc = Range(Cells(i, "H"), Cells(i, "Aw")).FormatConditions.Add(xlCellValue, xlBetween, Cells(i, j), Cells(i, j)) fc.Interior.ColorIndex = cl(6) End If Next j Next i End Sub ーー 実行 結果は、各々の対応した日付範囲に色が着く。 === 質問者のニーズに合っているか、また合わないとき、修正できるか、心配だが。 これぐらいだと、実質はVBAのコードが5-6行で、VBAの威力を感じた次第。 ーー もし、セルの日付文字を見えなくするには、文字フォントを「白色」に設定すれば、見かけ上、見えなくなる。H2:AW7など。
- imogasi
- ベストアンサー率27% (4737/17069)
VBAの回答しても質問者の意向に沿うか、判らないが、個人的に、やってみたので挙げてみる。 ーー 1製品分しか対象にしてない。 製品が複数になった時、対象の日付が右の列にどんどん伸びるが、シートを 見にくいのでは。 製品ごとに、受注製品と受注期間の日付を、受注品ごとに持ったほうが良いように感じた。 この点も、質問者はよく考えたのかどうか、質問文に明確でない。 また、1受注製品例しか質問に挙げてないのが理由。 ーー 質問の図データをまねて、下記でやった。 データは (1)A1:G2に 製番 マーシャ開始 マーシャ終了 払い出し 着工 試験 出荷 ABC101100 8/1 8/5 8/6 8/7 8/15 9/1 と、各セルに入力されているとする。 (2)H1:AM1までについて、上記VBAプログラムで、8/1から9/1までの日付を入力する。(日付シリアル値、そして書式設定で、8/1などのように見せている。重要点) ーー 結果 プログラム実行すると H2からAM2せるまでセルの塗りつぶしの色が設定される。 色は小生が決めさせてもらった。 ーーー この方法は、エクセルの「条件付き書式」の機能でセルに色づけしたもの。 標準モジュールに Sub test03() '--条件付き書式の削除 Range("H2:AM2").FormatConditions.Delete '--準備作業 For i = 1 To 8 Cells(2, i).NumberFormat = "m/d" Next i '-- For i = 8 To 39 Cells(1, i).ColumnWidth = Cells(1, i).Height / 5 Cells(1, i) = DateSerial(2019, 8, i - 7) Cells(1, i).NumberFormat = "d" Next i For Z = 2 To 2 ' Zは行番号 Set Rng = Range("h" & Z & ":AM" & Z) '---マーシャ Rng.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(H$1>=$B$" & Z & ",H$1<=$C$" & Z & ")" With Rng.FormatConditions(1).Interior .Color = vbYellow .TintAndShade = 0 End With '---払い出し Rng.FormatConditions.Add Type:=xlExpression, Formula1:="=H$1=$D" & Z With Rng.FormatConditions(2).Interior '2に注意 以下1つずつ増やす .Color = vbGreen End With '---着工中 Rng.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(H$1>=$E" & Z & ",H$1<$F" & Z & ")" With Rng.FormatConditions(3).Interior .Color = vbBlue End With '---試験中 Rng.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(H$1>=$F$" & Z & ",H$1<$G" & Z & ")" With Rng.FormatConditions(4).Interior .ColorIndex = 7 ' = RGB(255, 102, 0) End With '---出荷 Rng.FormatConditions.Add Type:=xlExpression, Formula1:="=H$1=$G" & Z With Rng.FormatConditions(5).Interior .Color = vbRed End With Next Z End Sub ーー 質問の説明のしぶりや、図から推測して、こんなものを作っても、実際の仕事に役立つかどうか疑問と思った。 進捗「管理」とかカッコよくいっているが、受注処理のタイム予定図でしかないのでは? == 操作やVBAでやるのでなく、 (1)出来合いのソフトを探すか (2)(初心者みたいに見える者がやるべき課題ではなくて)プロに頼んで作ってもらうべき、分野だろう。他の要素(材料手配や請求など)も抱合して。
- kkkkkm
- ベストアンサー率66% (1719/2589)
No5訂正です。 =B$6=H$5 罫線左 は =$B6=H$5 罫線左 です。
- kkkkkm
- ベストアンサー率66% (1719/2589)
No4の追加です。 罫線も入れたい場合は 以下を追加です。範囲を選択した状態でです。 =B$6=H$5 罫線左 =$C6=H$5 罫線右 =$D6=H$5 罫線左右 =$E6=H$5 罫線左 =$F6-1=H$5 罫線右 =$F6=H$5 罫線左 =$G6-1=H$5 罫線右 =$G6=H$5 罫線左右
- msMike
- ベストアンサー率20% (364/1804)
添付図参照 1.セル H4 に 2019/8/1 を、セル H5 に式 =H4 を、それぞれ入力 2.式 =H4+1 を入力したセル I5 を下1行にオートフィルした後で、  ̄ ̄範囲 I5:I6 を右方にズズーッと好きなだけ(此処では仮に AS列  ̄ ̄までとしておく)オートフィル 3.範囲 H4:AS4 を [$-en-US]mmm に、範囲 H5:AS5 を dd に、  ̄ ̄それぞれ書式設定 4.範囲 H4:AS4 に下記の[条件付き書式]を設定  ̄ ̄ルールの種類: “数式を…を決定”  ̄ ̄ルールの内容↓  ̄ ̄ ̄ ̄数式→ =DAY(H4)<>1  ̄ ̄ ̄ ̄書式→ 白のフォント色 5.範囲 H6:AS6 に下記の[条件付き書式]を設定  ̄ ̄ルールの種類: “数式を…を決定”  ̄ ̄ルールの内容↓  ̄ ̄ ̄ ̄条件1  ̄ ̄ ̄ ̄ ̄ ̄数式→ =AND(H$5>=$B6,H$5<=$C6)  ̄ ̄ ̄ ̄ ̄ ̄書式→ 黄の塗りつぶし色  ̄ ̄ ̄ ̄条件2  ̄ ̄ ̄ ̄ ̄ ̄数式→ =AND(H$5>=$D6,H$5<$E6)  ̄ ̄ ̄ ̄ ̄ ̄書式→ 緑の塗りつぶし色  ̄ ̄ ̄ ̄条件3  ̄ ̄ ̄ ̄ ̄ ̄数式→ =AND(H$5>=$E6,H$5<$F6)  ̄ ̄ ̄ ̄ ̄ ̄書式→ 青の塗りつぶし色  ̄ ̄ ̄ ̄条件4  ̄ ̄ ̄ ̄ ̄ ̄数式→ =AND(H$5>=$F6,H$5<$G6)  ̄ ̄ ̄ ̄ ̄ ̄書式→ 橙の塗りつぶし色  ̄ ̄ ̄ ̄条件5  ̄ ̄ ̄ ̄ ̄ ̄数式→ =H$5=$G6  ̄ ̄ ̄ ̄ ̄ ̄書式→ 赤の塗りつぶし色
- kkkkkm
- ベストアンサー率66% (1719/2589)
色付けは条件付き書式でできます。ガントチャートで検索したら色々出てくると思いますが。 一応マイクロソフトのテンプレートを参考までに。 https://templates.office.com/ja-jp/%e3%82%ac%e3%83%b3%e3%83%88-%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e8%a8%88%e7%94%bb%e3%82%b7%e3%83%bc%e3%83%88-tm02887601?omkt=ja-JP
お礼
回答ありがとうございます。 「条件付き書式」調べてみます。 関数とかマクロは使わないんですよね?
- aokii
- ベストアンサー率23% (5210/22062)
済みません。説明が難しいので、条件付き書式の数式を使うということで考えてみてください。
お礼
回答ありがとうございます。 「条件付き書式設定」理解しました。 とても簡単で、思っていたことができました。