帶有數據的單元格的圖表顏色

問題的形成

我希望直方圖上的列(或餅圖上的切片等)自動具有用於用源數據填充相應單元格的顏色:

預料到個別同志的驚訝和憤慨的叫喊聲,需要注意的是,當然,圖表中填充的顏色也可以手動更改(右鍵單擊該列- 點/系列格式 (格式化數據點/系列) 等等——沒有人爭辯。 但在實踐中,有很多情況下,直接在有數據的單元格中這樣做更容易,更方便,然後應該自動重新繪製圖表。 例如,嘗試為此圖表中的列設置按區域填充:

我想你明白了,對吧?

解決方案

只有宏才能做到這一點。 因此,我們開 Visual Basic 編輯器 從標籤 開發人員 (開發者——Visual Basic 編輯器) 或按鍵盤快捷鍵 Alt + F11鍵, 通過菜單插入一個新的空模塊 插入 - 模塊 並在那裡複製這樣一個宏的文本,這將完成所有工作:

Sub SetChartColorsFromDataCells() If TypeName(Selection) <> "ChartArea" Then MsgBox "Сначала выделите диаграмму!" 退出 Sub End If Set c = ActiveChart For j = 1 To c.SeriesCollection.Count f = c.SeriesCollection(j).Formula m = Split(f, ",") Set r = Range(m(2)) For i = 1 至 r.Cells.Count c.SeriesCollection(j).Points(i).Format.Fill.ForeColor.RGB = _ r.Cells(i).Interior.Color Next i Next j End Sub  

您現在可以關閉 Visual Basic 並返回 Excel。 使用創建的宏非常簡單。 選擇圖表(圖表區域,而不是繪圖區域、網格或列!):

並使用按鈕運行我們的宏 選項卡 開發人員 (開發者——宏) 或使用鍵盤快捷鍵 Alt + F8鍵. 在同一個窗口中,在頻繁使用的情況下,可以使用按鈕為宏分配鍵盤快捷鍵 參數 (選項).

PS

唯一美中不足的是,在使用條件格式規則將顏色分配給源數據的單元格的情況下,無法使用類似的功能。 不幸的是,Visual Basic 沒有用於讀取這些顏色的內置工具。 當然,有某些“拐杖”,但它們並不適用於所有情況,也不適用於所有版本。

  • 什麼是宏,如何使用它們,在 Visual Basic 中插入宏代碼的位置
  • Excel 2007-2013 中的條件格式
  • Excel 2013 中圖表的新增功能

發表評論