excel圖表技巧:如何用VBA製作動態地圖

2020-12-16 部落窩教育H

編按:除湖北外,全國新冠肺炎新增病例已經降到個位數增長了,國家也鼓勵我們有序復工。但是打開手機看到的還是觸目驚心的累計確診圖、現有確診圖,並且數據仍然在緩慢的上漲。那我們出門安全嗎?什麼時候才能不戴口罩出門呢?

經過作者和小編的努力,我們得到了全國地級城市的「疫情綠區圖」或者說「疫情消退圖」。在這些圖上,我們可以一眼看出自己所在地或者要去的地方已經多久沒有新增病例了。

通過這張圖,我們發現,疫情正在從讓人擔心的紅色、橙色減退為安全的綠色。全國絕大部分地區都已經變成不同程度的綠色,連續14天及以上沒有新增病歷的深綠區域也已經很多了。

我們放大顯示了部分省份的疫情綠區圖,為大家的安全出行提供一份參考。

下面我們來看看是怎麼得到這些綠區圖的,並且分析何時才能像以前一樣不戴口罩就可以出門。

【前言】

考慮了很久,還是決定寫下這篇文章,相對於EXCEL教程類的文章來說,無論是函數型、總結型,甚至是VBA教程、BI教程,我們都可以寫出很多的內容,可是今天我要分享的教程卻是「相當麻煩但是又寫不出多少內容」的文章。

「數據地圖」是很多行業領域都需要的,但是要把它做好卻並不容易,難度係數:中,複雜係數:高!在全國一盤棋的抗疫戰略中,我們部落窩總覺得應該做點什麼來表示我們也是這其中的一份子,所以作者E圖表述還是將這個圖做了出來,希望用我們EXCELER的特有方式來為這次「戰疫」奉獻我們特有的力量。

【正文】

一、疫情綠區圖創建

在VBA中,SHAPE是圖形,數據地圖就是利用對於自選圖形的屬性編輯,達到我們需要的效果,首先我們要有一份可編輯的中國各省地級城市的地圖矢量圖,這個大家可以加入部落窩的大家庭,向老師索取。

STEP 1:處理圖形

這個地圖已經被作者處理過了,主要有兩方面的處理:

1.給每一個圖形添加名稱。

選中圖形,對照地圖,在名稱框中輸入城市或者區域的名稱。

2.定位所有對象,調整圖形標籤的格式。

按鍵盤上的F5鍵,彈出「定位」窗口,依次點擊「定位條件——對象——確定。」

在選中所有圖形後,按照下面的格式調整圖形樣式。

圖形的設置就到這裡了,我們可以得到下面的圖,接下來我們再對數據進行處理。

STEP 2:處理數據

VBA雖然強大,但是我們沒有必要將所有的東西都用VBA來處理,所以我們把數據處理的部分交給了「函數」。

首先我們依然是需要數據源的,在工作中,也是如此。我們這些EXCELER操作的是EXCEL,操作的是數據;手裡沒有數據談何「技巧」的發揮,而在作者的認知中,一直覺得,數據源整理也應該算是學習EXCEL的基礎之一。

數據來源:今日頭條「抗擊肺炎」專題版塊

然後按下面的結構處理數據,便於我們代碼的引用。

G2單元格輸入函數:

=MAX(A:A)

H2單元格輸入函數:

=MAX(A:A)-MIN(A:A)+1

G4單元格輸入函數,並下拉填充:

=IF(C4<>C3,D4,D4-D3)

H4單元格輸入函數,並下拉填充:

{=IF(A4<>$G$2,0,LOOKUP(9^9,N(FREQUENCY(IF(OFFSET(G4,0,0,-$H$2,1)=0,ROW(INDIRECT("$4:$" & $H$2+3))),IF(OFFSET(G4,0,0,-$H$2,1)<>0,ROW(INDIRECT("$4:$" & $H$2+3)))))))}

H4單元格的函數,用於統計截止2月24日,最後一次每日新增量連續為0的次數。當然,這不是今天的重點,大家可以先使用「拿來主義」,以後我們肯定會講這個內容。

處理完數據,我們再建立一張空白工作表,在A1單元格輸入:城市名稱,B1單元格輸入:數據。講到這裡,同學們知道我們一共有幾張工作表嗎?一共四張,如下命名:

STEP 3:輸入VBA代碼

按ALT+F11組合鍵,打開VBE界面,錄入第一段代碼,工程名稱:填充圖形顏色

Sub 填充圖形顏色()

Dim i As Integer, a As String

Dim rg As Range

On Error Resume Next

With ActiveSheet

a = .[C1]

For Each rg In .Range("B2:B" & .[B65000].End(3).Row) '在《圖表數據》B列中循環每一個單元格

i = Application.Match(rg.Value, [C:C], 1) '確定每個值,在某個區間

ActiveSheet.Shapes(rg.Offset(0, -1).Value).Fill.ForeColor.RGB = Cells(i, "A").Interior.Color '按照區間對應的色階,填充圖形顏色

ActiveSheet.Shapes(rg.Offset(0, -1).Value).TextFrame2.TextRange.Characters.Text = rg.Offset(0, -1).Value & Chr(10) & rg.Value & a '給圖形的標籤賦值為 「城市名稱+數值+單位」的形式

Next rg

End With

End Sub

因為我們做的是模板,所以同學們可以直接使用數據源,不需要更改代碼。如有想學習代碼的同學,可以參考作者為代碼添加的批註說明。

因為作者要將各種數據統計在一張地圖中標記,所以我們還要做4段代碼,分別是「累計確診病例」、「現有確診病例」、「今日新增病例」、「連續零增加病例」。代碼的結構都是一樣的,我們用其中的「連續零增加病例」代碼列出範例如下。

Sub 連續0增長病例()

With Sheets("數據分析圖")

.[A26].Interior.Color = RGB(249, 83, 77) '以下6行代碼,是設置色階的RGB代碼

.[A27].Interior.Color = RGB(197, 208, 112)

.[A28].Interior.Color = RGB(165, 199, 112)

.[A29].Interior.Color = RGB(119, 185, 113)

.[A30].Interior.Color = RGB(76, 172, 113)

.[A31].Interior.Color = RGB(10, 154, 114)

.[B26] = "0-2天無新增" '以下6行代碼,是區間值的說明

.[B27] = "3-4天無新增"

.[B28] = "5-6天無新增"

.[B29] = "7-9天無新增"

.[B30] = "10-13天無新增"

.[B31] = "≥14天無新增"

.[C26] = 0 '以下6行代碼,是確定色階的輔助列,工作表中改成白色

.[C27] = 3

.[C28] = 5

.[C29] = 7

.[C30] = 10

.[C31] = 14

End With

Dim a As Integer, i As Integer

Dim arr, d

With Sheets("源數據")

a = .Range("A3").End(4).Row '確定源數據的末行,並賦值給變量a

arr = .Range("A4:I" & a) '將動態數據區域,賦值給數組

End With

Set d = CreateObject("scripting.dictionary") '建立字典腳本

For i = 1 To UBound(arr) '循環數組

d(arr(i, 3)) = arr(i, 8) '將最後一次的數值賦值給字典

Next i

Sheets("數據分析圖").[C1] = "地級城市:連續「零增加」病例天數分布圖" '確定圖表標題

With Sheets("圖表數據")

.Range("A2").Resize(d.Count, 1) = Application.Transpose(d.keys) '將字典的關鍵字賦值到《圖表數據》的A列

.Range("B2").Resize(d.Count, 1) = Application.Transpose(d.items) '將字典的項賦值到《圖表數據》的B列

.Range("C1") = "天" '標註單位

End With

Call 填充圖形顏色 '引用填充圖形顏色的工程

[A1].Select '定位最後的光標

Erase arr

Set d = Nothing

End Sub

關於其他三段代碼,大家可以嘗試著自己操作,當然也可以加入部落窩的學習QQ群,下載素材學習。

STEP 4:添加控制項並加載宏

首先我們添加控制項,依次點擊「工具欄——開發工具——插入——選項按鈕。」

滑鼠右鍵點擊控制項,點擊「編輯文字」,依次修改控制項的標籤。

看到上圖中「指定宏」的選項了嗎,點擊它就可以加載我們剛才寫的代碼了。

這些就是我們做的「工程名稱」,選擇對應的名稱再點擊確定,就可以將代碼加載到控制項上,點擊控制項的過程也就是激活此工程代碼的過程。藉此完成。

STEP 5:衍生出各省地圖

我們已經做出了大部分的地圖,那麼如果能從這個全國地圖中,再看到各省的地級城市地圖不是更加方便?下面我們就來看一下如何「根據全國地圖製作各省地圖」,以四川為例:

步驟1:在《行政區域圖》中按住CTRL鍵複選你要的省份的城市拼圖,複製到一個新的工作表,將工作表名稱命名為某省。

步驟2:在《數據分析圖》中複製出「色階區間區域A25:B31」、「標題」、「選擇控制項」,並將其一併粘貼到《四川省》工作表中,形成下圖的布局。

因為我們是複製過來的,所以控制項上依然有代碼加載,可以直接操作,無需再重新加載。

步驟3:在VBE代碼中,錄入下面的代碼:

Sub 四川()

Sheets("四川省").Select

End Sub

步驟4:再次回到《數據分析圖》工作表,複選四川省的各城市拼圖,單擊滑鼠右鍵,在彈出的菜單中選擇「指定宏」,選擇「四川」,點擊「確定」。此時,我們再點擊這些拼圖的時候,就可以連結到《四川》這個工作表中了。

步驟5:按照上面的操作,依次製作出《武漢》、《廣東》兩個工作表,然後按住CTRL鍵,複選《武漢》、《四川》、《廣東》三個工作表,在A1單元格中輸入「返回全國圖」,單擊滑鼠右鍵,在菜單中選擇「超連結」選擇項,設置連結到《數據分析圖》工作表,藉此我們整體的一個地圖就完成了,有興趣的同學可以自己製作自己省份的地圖。

下面給大家看幾張展示圖,記得一定要親手操作一遍。

從圖表上來看,疫情的防控工作,我們大中國做的真的很不錯,1個月的時間就已經控制到這樣的一個程度,說明我們的做法是正確的,身為一位中國EXCELER,我驕傲!!

【編後語】

二、何時可以不戴口罩了?

我們已經得到了全國和各省份的疫情綠區圖,這些數據顯示絕大多數地區的疫情已經被打敗,正在消退,正在遠離,超過7天、14天,甚至21天的連續零增加病歷的地區越來越多。

那何時我們可以不戴口罩出門,可以在公交、地鐵上自由呼吸呢?

1.中位數分析

在我們整理的Excel數據文件中,有一張工作表「圖表數據」。這裡面統計的是全國各地級市截止2月24日連續零增加病例的天數。

我們複製數據列,並去掉湖北的數據,然後進行升序排列,得到321個數據。這些數據中,最小的是0,有11個,最大的是32,有30個。數列的中位數為10。如果我們保守些,按照連續24天(當前最長潛伏期)零增加就視為疫情結束的話,需要14天,也就是3月10日後,除湖北外,全國絕大多數地區將進入深綠。

2.現存確診的走勢分析

通過百度APP我們能查到非湖北現存確診人數圖。

這是一條看起來比較光滑的接近拋物線的圖。我們可以在這張圖上進行趨勢推測,現存確診歸零大約在3月16日前後。

3.當前治癒數據的分析

我們統計了全國、湖北、非湖北的每日新增治癒。

很顯然,湖北外新增治癒在2月20日達到最高后開始降低。這個態勢是從低到高再到低的走勢。截止到2月25日,非湖北共治癒8830人,每日平均治癒人數約為245。全國非湖北現存確診人數是4037,當前每日新增是個位數,可以不考慮,全部治癒(非湖北死亡很低,所以忽略死亡)需要約16天,也就是到3月12日前後。

4.結論

綜合前面3項分析,我們預測到3月中旬,全國湖北外的地方疫情就結束了,我們就可以摘掉口罩,自在出門了。當然,如果謹慎的話,需要等到湖北結束,時間還需要延後10~20天,也就是3月底或4月中旬,我們才能摘掉口罩。

當然所有的預測都是建立在我們繼續堅持「戴口罩、勤洗手、少聚集」的做法上,所以,在疫情結束前請大家繼續堅持!

最後,我們看看截止到2月26日數據,湖北各地已經有8個地級市沒有出現新增病歷了!

再次聲明:本文只做EXCEL技術交流與分享,對於數據內容正誤,請以國家官方發布信息為準。

****部落窩教育-excelVBA應用技巧****

原創:E圖表述/部落窩教育(未經同意,請勿轉載)

相關焦點

  • excel製作圖表能力提升,銷售動態圖表的製作技巧
    我們使用excel表格處理數據的時候,我們常常會通過圖表的形式更好地展示數據,而動態圖表比二維圖表的數據展現更加直觀,在實際工作中,一個企業的銷售部門,一般情況每個月會根據自己的銷售業績製作一份銷售數據統計表,假如單單只是用表格數字來表現,就顯得太死板了一下,如果數據量大的話,就會顯得比較雜亂
  • excel圖表技巧:切片器加透視表製作動態圖表
    上回說到,武林盟主要求大家學習excel動態圖表,此方法雖然可行,卻愚鈍至極,老衲揚言要傳授 「若不自宮,也能成功」的修煉大法,只需用滑鼠操作十幾秒即可。出家人從不打誑語,今日就請施主隨老衲修煉起來吧。一石激起千層浪,其實江湖早有傳言,「獨孤大俠」歸隱十年,日夜研究excel動態圖表,已匯成口訣:動態圖表真美妙;製作起來有訣竅。
  • 怎樣在EXCEL中製作動態圖表
    之前小白通為大家介紹過如何製作動態排班表,我們可以用Vlookup函數製作動態圖表,讓圖表內容根據我們選擇的項目而變化。01製作動態表(1)製作下拉菜單新複製一個表頭,選擇姓名下方的空白單元格)02製作動態圖選擇動態表,插入柱形圖,選擇合適的格式,完成動態圖。
  • excel圖表技巧:如何製作一張直觀互動的動態圖表
    動態圖表是我們平時工作中,十分常用的一類圖表。與靜態圖表不同,它能更加直觀、靈活的展示數據,可以讓用戶進行交互式的比較分析,是圖表分析的較高級形式。那麼今天就和大家說說如何用excel製作一張根據時間段而自動變化的動態圖表。趕緊來看看看吧!
  • Excel如何製作動態圖表效果?
    excel如何製作動態圖表效果?動態圖表效果指的是我們在進行數據篩選的時候,它的圖表就會跟著我們的需要進行變化,方便我們進行統計數據,下面就來給大家操作一下,如何通過數據透視表製作動態圖表效果,非常簡單。
  • Excel中製作動態圖表
    /454135.html一到月底就要做報表,尤其是圖表類的,數據又多,要做的圖表也多,那麼Excel如何製作動態圖表?第一步,先說下思路,動態圖表的實現,依賴於用公式生成數據。我們用公式生成的數據來代替原數據表的數據,通過公式中函數參數的變化來達到動態的目的。
  • excel中自帶的這些可視化插件,製作動態圖表不發愁
    在我們日常工作中,很多人都會面對一堆數據,卻不知道如何更直觀地展示它們,其實excel中有很多圖表插件幫助我們美化,讓你不再是單純給老闆、客戶展示乾癟的數據~一、people gragh人物圖像,讓圖表更加簡單清晰
  • excel數據可視化教程,高級動態圖表的製作
    我們在實際工作中,我們經常使用excel表格處理和分析數據,我們之前學習過excel圖表的製作,我們掌握了簡單的excel平面圖表的製作,比如製作柱形圖、折線圖、餅圖,我們還是學習了使用excel控制項製作簡單的excel動態圖表,今天我們是要分享的是excel高級動態圖表的製作,excel
  • Excel教程:Excel動態圖表製作
    ***職場人最大的底氣,是精通excel動態圖表!這種動態圖在展示的時候會非常的直觀,今天我們就來學習製作帶有複選框的動態圖表。二、製作步驟(一)插入複選框excel自身就有複選框,在「開發工具」中。但是很多人沒有找到,因為那個功能默認關閉,需要手動打開。
  • 如何製作EXCEL動態圖表看板?
    #動態圖表看板#事實上是將多組相關聯的數據製作成多個圖表集中放置在一個版面上。由於數據存在關聯性 ,對應的圖表集中在一起可以很好的表現出它們的關聯。好的圖表看板可以很好地呈現數據之間的關係 版面美觀,具有友好的用戶交互體驗。我們先來看下效果圖:
  • excel圖表製作技巧:多系列數據,如何製作組合圖表?
    本篇教程是做懂領導心思圖表的第三篇,分享多系列數據圖表的製作經驗。多系列數據圖表的製作,在工作中,一直是個難題。由於數據系列較多,做出來的圖表看著總顯得混亂,各數據之間的對比性也不強,基本違背了我們作圖的初衷。那有沒有什麼好的思路或者方法來製作多系列的圖表呢?下面我們就來看看excel高手是如何進行製作的。學習更多技巧,請收藏關注部落窩教育excel圖文教程。
  • excel篩選技巧:如何做一個動態篩選自動化圖表?
    提到「動態篩選」,其實是有固定套路的,給大家普及一下三種常用的套路:(1)數據透視表/超級表+切片器(2)數據有效性+公式(3)開發工具-窗體控制項-單元格關聯+公式+高級篩選這三種套路,希望大家可以熟記於心,並形成條件反射,日後一旦遇到動態表格製作,就直接拿來用,腦中想到這幾種固定搭配即可
  • excel篩選技巧:如何做一個動態篩選自動化圖表?
    ,希望大家可以熟記於心,並形成條件反射,日後一旦遇到動態表格製作,就直接拿來用,腦中想到這幾種固定搭配即可。*本著讓大家深入理解的精神,給大家解釋一下,這幾個套路的形成思路(同類問題均可按此方法進行分析):1、「動態篩選」,可以拆分為:動態+篩選2、涉及篩選部分,需要想到excel具有「篩選」功能的操作或按鍵有哪些:(1)excel自帶的篩選
  • excel圖表製作技巧:如何將多個銷售項目,做成九宮格
    說到「九宮格」,想必大家都不陌生,平時朋友圈裡的九宮格配圖,吃火鍋時的九宮格火鍋,手機屏幕上的九宮格解鎖圖案等等,可以說「九宮格」已經滲透進了我們的生活中,就連excel中也有「九宮格」圖表,是不是有點好奇呢?趕緊來看看吧!學習更多技巧,請收藏部落窩教育excel圖文教程。大家好!這裡是部落窩教育,我是花花,很高興和你一起學習Excel教程。
  • 「Python替代Excel Vba」系列(終):vba中調用Python
    帶你用pandas玩轉各種數據處理「Python替代Excel Vba」系列(四):課程表分析與動態可視化圖表本系列一直強調要善用各種工具,作為本系列的最後一節,那麼這次就用一例子說明如何讓Python結合Vba,直接在Excel中動態獲取各種處理條件,輸出結果。日後也會不定期分享 pandas 的處理案例,但不一定非要與 Excel 掛鈎。比如直接結合 power bi 做處理分析。
  • excel動態圖表:一看就會的動態圖表入門篇
    這篇教程是動態圖表的入門篇,知識點並不難,但是在工作中卻非常有用,大家就當做是在讀武林小說來學習這篇教程吧!日月輪迴,鬥轉星移,江湖上,當代武林盟主厭倦世事紛擾,已生退意,但一直未能尋到合意之接班人,故下令,一年為限,哪位正義人士斬殺魔教眾最多,將接任新的武林盟主之位。從此,武林殺機四起,江湖腥風血雨。
  • excel動態圖表:一看就會的動態圖表入門篇
    這篇教程是動態圖表的入門篇,知識點並不難,但是在工作中卻非常有用,大家就當做是在讀武林小說來學習這篇教程吧!日月輪迴,鬥轉星移,江湖上,當代武林盟主厭倦世事紛擾,已生退意,但一直未能尋到合意之接班人,故下令,一年為限,哪位正義人士斬殺魔教眾最多,將接任新的武林盟主之位。從此,武林殺機四起,江湖腥風血雨。
  • excel數據分析技巧:數據分布地圖的製作過程
    看完昨天用VBA製作的全國疫情地圖的文章,相信不少同學都被震撼到了,一邊感嘆excel的強大,一邊又覺得VBA門檻高,難學!今天我們就教大家一個相對簡單的製作疫情地圖的方法,趕緊來看看吧!【前言】上一篇關於「新冠肺炎」動態地圖色階圖的文章,很多同學都覺得「門檻」有點高。當然,VBA作為EXCEL使用門檻較高的技能,製作的內容也會有一個較好的展示。那今天我們就來學習一些可以「摸得到」的技術吧。
  • Excel圖表製作難?這款excel圖表工具插件免費用
    但是這段時間一直在翻找有效的圖表工具,不論是百度還是知乎,基本上都是用Excel圖表製作的,各類大牛的教材,實在讓人膜拜,我也自己動手用Excel,做了一些試試,感覺跟大咖的圖表效果一比,天壤之別。我深深的感覺到,知識真是個好東西...要練成大咖的模樣,我不知道需要經過多久才能得達到....
  • Excel動態圖表,其實很簡單
    小夥伴們好啊,今天和大家分享一個動態圖表技巧,在各個Excel版本中都可以實現哦。關於OFFSET函數的知識,可以點這裡:說說函數中的極品——OFFSET收工了,只要在控制項下拉列表中選擇不同的公司分部,圖表就會自動顯示該部門的數據情況。