馬震安
以前我們常用表單控件來制作動態圖表,通過選項按鈕、下拉列表等控件來控制圖表的互動。而在下面的實例中只需要鼠標來到相應單元格,不用點擊,即可使圖表發生動態變化(圖1)。操作更加簡單了,但實現起來容易嗎?讓我們在Excel 2016中試試看吧。
1. 巧用簡單自定義函數
我們以球員得分數據表為例,打開數據表,整理好數據。
隨后點擊“公式”選項卡中的“定義名稱”,新建名稱分別為“姓名”、“數據”,引用位置分別選擇J2、K2的兩個名稱。點擊“開發工具”選項卡打開VBA編輯窗口,點擊“插入→模塊”,在右側的代碼編輯區輸入圖中的兩個簡單自定義函數即可(圖2)。
接下來,在J9單元格輸入“=IF(ISERROR(HYPERLINK(hl($A$1))),$A$1,HYPERLINK(hl($A$1)))”,在J10單元格輸入“=IF(ISERROR(HYPERLINK(hl($A$7))),$A$7,HYPERLINK(hl($A$7)))”,J11到J13單元格中的公式依次類推,這樣在J9、J10、J11、J12、J13就會顯示NBA球員姓名,同時也實現了當鼠標放到J9、J10、J11、J12、J13單元格時,J2單元格就會出現相應的行號值;同樣,在K8單元格輸入“=IF(ISERROR(HYPERLINK(hll(B$1))),B$1,HYPERLINK(hll(B$1)))”,L8單元格輸入“=IF(ISERROR(HYPERLINK(hll(C$1))),C$1,HYPERLINK(hll(C$1)))”,M8到O8單元格中的公式依次類推,這樣在K8、L8、M8、N8、O8就會顯示各項參數名稱,同時也實現了當鼠標放到K8、L8、M8、N8、O8單元格時,K2單元格就會出現相應的列號值;在L1:P1輸入相應賽季,在L2單元格中輸入“=OFFSET($A$1,COLUMN()-12+$J$2,$K$2,1,1)”,并向右填充到P2,這樣就會根據J2、K2單元格的行號、列號獲取到制作圖表所需要的數據(圖3)。
2. 為數據區域添加圖表
選定好L1:P2數據區域,插入數據點折線圖。根據需要設置好折線圖的線條樣式、繪圖區的背景色;另外,將折線圖調整好大小,拖放到顯示姓名和各項參數名稱所圍成的單元格區域,并設置好折線圖放置處單元格的填充色(圖4)。
3. 設置指定單元格效果
當鼠標移動到相應單元格,除了能獲取相應數據,最好單元格還可以有填充色的改變。選定J9:J13,點擊“開始”選項卡中“條件格式”下的“新建規則”,在彈出的窗口中點擊“新建規則”按鈕,再在新彈出的窗口中,規則類型處選擇“使用公式確定要設置格式的單元格”,在“為符合此公式的值設置格式”處輸入“=$J9=INDEX($A$1:$A$30,$J$2,0)”。點擊“格式”按鈕,在彈出的窗口中設置好單元格所需要的格式(圖5)。
確定后返回“條件格式規則管理器”,在新建規則的“如果為真則停止”處進行勾選。同樣道理,選定K8:O8,新建規則,公式處輸入“=COLUMN()-$K$2=10”(圖6)。
通過這樣的設置,就實現了當鼠標移動到相應單元格時,單元格就進行顏色的填充、邊框顏色的改變及文字顏色的改變。
4. 對圖表進行必要的裝飾
為看起來更加美觀,需對圖表進行一些必要的裝飾。插入1個“形狀”中的圓角矩形,調整其大小使其比姓名、參數名、圖表區稍大些,設置其填充色為無,線條寬度5磅,顏色與單元格填充色一致。將J9:J13單元格橫線顏色設置為白色,K8:O8單元格豎線顏色也設置為白色,在J8單元格插入裝飾性的圖標或文字(圖7)。
小提示
HYPERLINK函數具有鏈接跳轉功能,整個IF函數語句就是根據ISERROR()函數的值,如果是錯誤值就顯示相應單元格的值,否則就在J2或K2中顯示相應的行列號;而OFFSET函數是以A1單元格作為參考系,向下移動COLUMN()-12+$J$2行,向右移動$K$2列,其中COLUMN()表示當前列號,即L列的列號為12,M列的列號為13。名稱的引用位置也可根據需要自己設置,以上涉及到的公式也可在自己所需要的單元格中輸入。
小提示
在設置規則格式時,單元格的填充色最好與圖表背后單元格區域的填充色一致,這樣實現起來效果更加逼真。