動態圖表的標籤顯示如何自適應不同類型的指標?

這是一個學員問到的問題。

一般動態圖表的做法,我們使用控制項+函數,將用戶所選擇的數據,引用出來做圖表。控制項一般是窗體控制項的下拉框,函數可能會使用 index、vlookup、offset 等。

如果是在同一個維度內切換,比如選擇不同的分公司,不同的產品類型,由於所引用的數據是同類指標,單位和顯示格式都是一樣的,圖表顯示沒有問題。

(普通的動態圖表)

但如果是切換不同的指標,比如財務指標分析,所分析的指標有:

  • 金額類,顯示格式為整數或小數
  • 比率類,顯示格式為百分比,包括整數或小數的百分比
  • 天數次數類,顯示格式為整數或小數

這時候,普通的動態圖表裡就無法自動適應不同指標類型正確顯示標籤格式了。這是個缺陷,完美主義者無法容忍。那如何處理呢?

在《讓你的圖表動起來》課程里,介紹過3種處理辦法。

1、使用自定義格式兼容處理。

在使用普通方法做動態圖表的情況下,可以對輔助數據源或者圖表的標籤做自定義格式設置兼容顯示一下。

觀察你的數據指標,金額類一般在百千萬的級別,比率類的指標一般在±1或±1.5以內,因此,如果設置下面的自定義格式,就可以簡單兼容一下:

[=0]-;[<1.5]0.0%;0.0

當指標值在1.5以下就顯示為 0.0% 的百分比格式,1.5以上顯示為 0.0 的格式,其中對於0值,無法分開 0.0 或 0.0%,乾脆顯示為 -。具體設1.5還是15可根據你的數據來。

(y軸刻度標籤能自適應指標格式)

這個做法最簡單,顯示結果也還可以接受,但需要注意觀察指標數據的級別和範圍,確認兼容顯示是正確的。缺點是對於整數和小數還是無法準確區別,對於大的負數情況也無法正確顯示,因此適用範圍有限。(參考課程第7.2、10.6節)

2、使用 offset 函數定義動態名稱。

不使用固定的輔助序列,而是使用 offset 函數定義動態名稱,根據用戶的選擇,直接引用原始數據供應給圖表,那麼原始數據的格式會被帶到圖表裡面,序列的數據標籤、y軸的刻度標籤,都會自動反映原始數據的格式。

(y軸刻度標籤能自適應指標格式)

但這個屬性能力,在2003、2010版本中都是可以的,在2013、2016版本中卻消失了,需要按F9刷新一下,格式才能帶到圖表裡去,應該是新版本的bug。

因此,使用2010版本以下的用戶可以使用此方法,2013版本以上用戶則不行。缺點是 offset 定義動態名稱做動態圖表略有難度。(參考課程第4.2、10.8節)

3、使用宏代碼設置格式。

事先對每個指標設置好各自的格式代碼,當用戶選擇指標後,調用宏過程,將對應的格式代碼設置到圖表的數據源或者標籤上去。下面代碼是設置圖表y軸刻度標籤的格式。

Sub set_y_fmt() "設置y軸刻度標籤格式

ActiveSheet.ChartObjects("mychart").Activate

ActiveChart.Axes(xlValue).TickLabels.NumberFormatLocal = [fmt_code].Value

End Sub

(y軸刻度標籤能自適應指標格式)

這個做法可以最精確地控制不同指標的不同格式,最為完美。缺點是需要用到vba宏,不過只有1行代碼,也容易掌握。(參考課程第10.9節)

以上內容,屬於中高級細節技巧,可根據心情選擇使用。若非完美主義者其實可以忽略,問題也不是太大。為保護學員投資,這裡就不詳細講解了。具體教程可以點擊【閱讀原文】參見課程里相應章節的講解,最全面、最系統、最高階的傳統動態圖表應用專題課程。


推薦閱讀:

【HR必備】EXCEL字元操作,你只需要學會5個函數
運動散點圖-----powerquery移形換影
學習Power Query,怎能沒有PBIDicts
[E0-02]資料庫思維
如何將多個文件夾的工作簿合併到一個文件夾

TAG:Excel图表绘制 | MicrosoftExcel | 数据可视化 |