Excel做甘特圖,如何讓甘特圖的條形顏色隨著項目進度的變化而變化?

比如說完成100%是藍色,50%-100%是黃色,其他是紅色。當我改變進度欄的數字時條形圖顏色會變,最好不是手工調色。(或者可編程實現嗎)如圖:


開始以為你使用單元格填充做的條形圖,後來發現是 Chart。。。囧
因為平常做計劃都是 Project,所以對於 Excel 做甘特圖還是不熟悉,剛照虎畫貓做了一個:

其實接下來怎麼做我也不知道,但有神器: 錄製宏
開啟錄製器:

選中一個條條,改變它的顏色,結束錄製,Alt+F11 進入 VBE 看看代碼:

大概讀一下:

  • 選區圖表,選區圖標的數據系列,選區圖表上的點也就是一個 Task 對應的甘特條
  • 設置填充,也就是 ForeColor.RGB這一個賦值

剩下的工作就是刪除不需要的信息,比如 Visible,Transparency 啊這些:
另外要考慮的就是當你輸入的時候要自動更改,因此需要將代碼添加到 WorkSheet_Change 事件中,另外考慮到代碼復用性,可以寫一個模塊 SetColor,然後將 SetColor 插到 SheetChange 事件中:

試驗一下,是可以的,不過最後圖會被選擇,這樣:

解決辦法是在設置完顏色後加一個 Range("A1").Select,這樣執行完 Selection 就會被釋放,然後定位到 A1,當然你也可以設置其他的

剩下的工作就是針對其他點添加代碼,並測試完善
可以寫個 For 循環來實現。因為要調用單元格參考,這個時候 For Each 就不適用了,還是用循環變數來 For 吧

另外,你要將對應的點和單元格的關係對應起來:

If 那一塊的條件自己添加吧,我這個只是個簡單的示例,顏色自己更改

另外,弱弱的問一句為什麼不用 Project 呢……半小時基本就入門了,還能設置前置任務,關鍵路徑……

Code:

Private Sub Worksheet_Change(ByVal Target As Range)
" Action After User Changed This Sheet
SetColor
End Sub

Sub SetColor()
" Set Color of Bar
ActiveSheet.ChartObjects("圖表 2").Activate
ActiveChart.SeriesCollection(2).Select
ActiveChart.SeriesCollection(2).Points(4).Select
With Selection.Format.Fill
If ActiveSheet.Cells(4, 8) &> 50 Then
.ForeColor.RGB = RGB(0, 176, 80)
Else
.ForeColor.RGB = RGB(255, 0, 0)
End If
End With
Range("A1").Select
End Sub

注意,放在你數據所在的那個 Sheet 之後可以去掉 ActiveSheet


可以用EXCEL實現,不需要VBA。先來拆解需求,完成100%是藍色,50%-100%是黃色,其他是紅色,這個可以理解為把數據分為3個系列,在圖表中不同系列不同顏色。

第一步,添加輔助列-系列,函數-LOOKUP

0到50%為1類,50%到100%為2類,100%為3類,利用公式=LOOKUP(D2,$J$1:$K$3)獲取分類列。如圖:

第二步,添加輔助列-系列123,函數VLOOKUP
將表格做成如下形式:

F2單元格中的公式為=IFERROR(VLOOKUP($A2F$1,IF({1,0},$A$2:$A$7$E$2:$E$7,$C$2:$C$7),2,FALSE),0)
填好之後使用Ctrl+Shift+Enter,因為公式中涉及數組,這樣才能得出結果。成功後公式外會自動顯示花括弧。然後拖動單元格填充即可。第三步,插入堆積條形圖

選擇ABFGH列插入後格式很亂,需要自己調整。
1、選擇數據-添加系列-選擇B列數據-移到首位
2、編輯分類標籤-選擇A列數據
圖表變成這個樣子:

3、選擇開始系列-修改為無填充
4、選擇水平坐標軸-邊界最小值填入7/26
5、選擇垂直坐標軸-勾選逆序類別
6、將系列填充為想要的顏色
結果如下:

這樣在修改進度時,系列會聯動變化,後面所屬系列值也會聯動改變。
完成。


用Excel畫甘特圖這麼複雜,畫出來的也不好看和專業。不如使用專業的甘特圖繪製軟體,比如Edraw億圖圖示。

  1. 打開億圖圖示,選擇開打-新建-甘特圖。


  2. 雙擊左側甘特圖,或者把甘特圖拖到中間。

  3. 在甘特圖選項窗口設置,日期單位,工作日,格式,開始結束時間和貨幣單位。


  4. 設置完畢後點擊ok按鈕,此時在繪圖面板內生成一個甘特圖樣板.


  5. 點擊左上的甘特圖按鈕可以添加刪除子任務。


  6. 可以在甘特圖中移動任務進度條,調整位置。


  7. 完成後可以導出為思維導圖和時間線



後期要跟蹤進度就要用專業的project編製進度表。還能表達各工序之間的搭接關係。


推薦閱讀:

TAG:MicrosoftExcel | 甘特圖GanttChart | 辦公軟體 | VBA | Excel公式 |