亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        VBA實(shí)現(xiàn)自動(dòng)創(chuàng)建Excel圖表

        2017-04-14 18:37:10劉美麗
        電子技術(shù)與軟件工程 2017年6期
        關(guān)鍵詞:折線圖

        Excel是一個(gè)集數(shù)據(jù)處理和圖表繪制于一身的優(yōu)秀軟件。根據(jù)工作表的數(shù)據(jù),利用“圖表向?qū)А笨梢苑奖憧旖莸乩L制圖表。但是當(dāng)需繪制的圖表數(shù)量較多時(shí),“圖表向?qū)А钡睦L圖方式就不那么“可愛(ài)”了。本文通過(guò)對(duì)Excel的二次開(kāi)發(fā),用Excel VBA編程實(shí)現(xiàn)了折線圖的自動(dòng)繪制。對(duì)本程序稍作修改,可用于繪制其它類型的圖表。

        【關(guān)鍵詞】Excel VBA 自動(dòng)創(chuàng)建圖表 折線圖

        1 引言

        Excel是一個(gè)集數(shù)據(jù)處理和圖表繪制于一身的優(yōu)秀軟件。運(yùn)用Excel的“圖表向?qū)А眮?lái)繪制圖表也不算麻煩。但是,如果要繪制的圖表數(shù)量很多,用“圖表向?qū)А钡睦L圖方式來(lái)繪制圖表,就不是一件令人愉快的事了。

        本校老師在參與《國(guó)家重點(diǎn)基礎(chǔ)研究發(fā)展計(jì)劃——973計(jì)劃子課題——湖南省酸雨污染現(xiàn)狀、成因及控制對(duì)策研究》項(xiàng)目的數(shù)據(jù)處理工作中,需要繪制湖南省十四個(gè)地市及全省pH均值和九種要求的離子(SO42-、NO3-、NH4+、Ca2+、F-、Cl-、Mg2+、Na+、K+)的離子濃度均值及[SO42-]/[NO3-]、[SO42-]/[ΣA-]、[NO3-]/[ΣA-]、([SO42-]+[NO3-])/[ΣA-] 、[Ca2+]/[ NH4+]、[[Ca2+]/[ΣB+]、[ NH4+]/[ΣB+]、[ΣA-] /[ΣB+]十年數(shù)據(jù)的逐年、逐季、逐月的變化折線圖。對(duì)于這種相同數(shù)據(jù)結(jié)構(gòu)的大量圖表繪制,用“圖表向?qū)А眮?lái)一張張繪制顯然是令人生畏的,而使用Excel VBA對(duì)Excel的作圖功能進(jìn)行二次開(kāi)發(fā),將可大大提高工作效率。

        2 Excel VBA創(chuàng)建圖表常用的方法

        Excel VBA是利用Chart對(duì)象來(lái)創(chuàng)建圖表的。Chart對(duì)象和Charts對(duì)象集最常用的方法和屬性有:

        2.1 Add()方法

        Charts對(duì)象集的 Add()方法用于向圖表集合中添加新的圖表對(duì)象。例:

        Set mychart = charts.Add

        表示在活動(dòng)圖表之前插入一個(gè)新的圖表,并將返回值保存在mychart對(duì)象變量中,以便需要時(shí)通過(guò)該變量來(lái)訪問(wèn)該圖表。

        2.2 Location()方法

        Add()方法創(chuàng)建的圖表只存在于內(nèi)存,要在工作表中看到新創(chuàng)建的圖表,必須指定圖表的顯示位置。Location()方法即是指定新創(chuàng)建的圖表的插入位置的。其語(yǔ)法如下:

        Chart.Location(Where,Name)

        Where用于指定圖表的插入位置:xlLocationAsNewSheet指定新圖表作為新工作表插入工作簿中,此時(shí)Name為新工作表的名稱(可省略);xlLocationAsObject指定新創(chuàng)建的圖表作為圖像元素插入到工作表中,此時(shí)Name為要插入的工作表的名稱。

        2.3 SetSourceData()方法

        SetSourceData()方法用來(lái)指定作圖的源數(shù)據(jù)區(qū)域。其語(yǔ)法為:

        Chrat.SetSourceData(Source,PlotBy)

        其中,source用于指定數(shù)據(jù)源,可將Range對(duì)象傳說(shuō)遞給該參數(shù)。PlotBy用于指定數(shù)據(jù)繪制方法,如果傳遞系統(tǒng)常量xlColumns則表示數(shù)據(jù)在列上生成(系列產(chǎn)生在列);如果傳遞系統(tǒng)常量xLRows,則表示數(shù)據(jù)在行上生成(系列產(chǎn)生在行)。

        SetSourceData()方法雖然能很方便地指定數(shù)據(jù)源,但該方法不可以接受分散的單元格區(qū)域作為圖表的數(shù)據(jù)源。當(dāng)需要靈活地操縱圖表的數(shù)據(jù)源時(shí),需使用SeriesCollection()方法。

        2.4 SeriesCollection()方法

        SeriesCollection是Series對(duì)象的集合對(duì)象。Series對(duì)象表示圖表中的一個(gè)系列。系列是一個(gè)圖表中用于比較的一組數(shù)據(jù),SeriesCollection即是保存這些系列的集合。系列在不同的圖表中有不同的含義。在折線圖中,每條線即是一個(gè)系列,雷達(dá)圖中每個(gè)區(qū)域即是一個(gè)系列,餅圖只有一個(gè)系列。

        Series對(duì)象中常用的屬性有Name、Values和XValues。其中Name屬性表示該系列的名稱,會(huì)在圖表的圖例區(qū)域顯示出來(lái);Values屬性表示該系列的實(shí)際值,用于確定圖表中圖形位置的形狀;XValues屬性表示該系列的橫坐標(biāo)值,傳統(tǒng)在圖表的橫坐標(biāo)上顯示出來(lái)。

        Values和XValues屬性必須用Range對(duì)象來(lái)指定,不可指定為變量的值。如:

        Chrat.SeriesCollection(1).values=Rang(“B1:B5”)

        Chrat.SeriesCollection(1).Xvalues=Rang(“A1:A5”)

        SeriesCollection()方法可以自由地控制圖表中所有的顯示數(shù)據(jù),通過(guò)它,程序可以自由地操縱圖表抽需的每一個(gè)數(shù)據(jù),因此比SetSourceData()方法更為靈活。

        2.5 Axes()方法

        Chart對(duì)象的Axes()方法返回圖表上單個(gè)坐標(biāo)軸或坐標(biāo)軸集合的某個(gè)對(duì)象。該方法的語(yǔ)法如下:

        Chart.Axes(Type,AxisGroup)

        Type參數(shù)用于指定要返回的坐標(biāo)軸,可以是以下系統(tǒng)常量之一:數(shù)值軸—xlValue、分類軸—xlCategory或用于三維圖表,表示縱深軸向的xlSeriesAxis。

        通過(guò)Axes()方法,可以控制圖表上坐標(biāo)軸的相關(guān)屬性,如坐標(biāo)軸顯示的標(biāo)題、坐標(biāo)軸的刻度等。

        2.6 ChartType屬性

        ChartType屬性用于指定圖表的類型。常用圖表類型和ChartType 屬性值的對(duì)應(yīng)關(guān)系如表1。

        3 作圖數(shù)據(jù)

        將計(jì)算結(jié)果轉(zhuǎn)換成易于作圖的形式,如圖1。圖中每一行數(shù)據(jù)將繪制一張圖。

        4 程序?qū)嵗白⒔?/p>

        Sub 繪制折線圖()

        Dim mycell As Range

        Dim isect As Range

        Dim i As Integer

        Dim m As Integer

        Dim n As Integer

        On Error GoTo esc ‘錯(cuò)誤陷井

        For r = 1 To 270 ‘第2行至第271行為需作圖的數(shù)據(jù),每一行數(shù)據(jù)需作一張圖

        Worksheets("年均值").Activate

        Set mycell = Worksheets("年均值").Range(Cells(r + 1, 1), Cells(r + 1, 12)) ‘指定作圖數(shù)據(jù)源

        Set isect = Application.Intersect(Worksheets("年均值").Range("c2: l271"), mycell)

        ‘計(jì)算數(shù)據(jù)源的首個(gè)單元格的行號(hào)、列號(hào)和總列數(shù)

        i = isect.Row

        m = isect.Column

        n = m + isect.Columns.Count – 1

        ‘查尋工作簿中是否存在與欲建圖表同名的圖表,若無(wú)則新建一個(gè)圖表,若有則激活該圖表

        If Not (find(Worksheets("年均值").Cells(i, 1) & Worksheets("年均值").Cells(i, 2))) Then

        Charts.Add

        ActiveChart.name = Worksheets("年均值").Cells(i, 1) & Worksheets("年均值").Cells(i, 2) '圖表名稱

        Else

        Charts(Worksheets("年均值").Cells(i, 1) & Worksheets("年均值").Cells(i, 2)).Activate

        End If

        ActiveChart.ChartType = xlLineMarkers ‘指定圖表類型為數(shù)據(jù)點(diǎn)折線圖

        ActiveChart.SetSourceData Source:=mycell, PlotBy:=xlRows ‘指定作圖的數(shù)據(jù)源,系列產(chǎn)生在行

        With Worksheets("年均值")

        For Each one In ActiveChart.SeriesCollection

        one.XValues = .Range(.Cells(1, m), .Cells(1, n)) '分類名稱

        one.name = .Cells(i, 1) '圖例名稱

        i = i + 1

        Next one

        End With

        ActiveChart.Location Where:=xlLocationAsNewSheet ‘創(chuàng)建的新圖表作為新工作表插入到工作簿中

        With ActiveChart

        .HasTitle = True ‘指定要顯示圖表標(biāo)題

        .ChartTitle.Characters.Text = Worksheets("年均值").Cells(i - 1, 1) & Worksheets("年均值").Cells(i - 1, 2) & "十年變化趨勢(shì)" ‘指定圖表標(biāo)題的文字

        .Axes(xlCategory, xlPrimary).HasTitle = True ‘指定顯示分類軸標(biāo)題

        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "年份" ‘指定分類軸標(biāo)題的文字

        .Axes(xlValue, xlPrimary).HasTitle = True ‘指定顯示數(shù)值軸標(biāo)題

        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "離子濃度(μeq/L)" ‘指定數(shù)值軸標(biāo)題的文字

        End With

        With ActiveChart.Axes(xlCategory)

        .HasMajorGridlines = True ‘指定顯示分類軸的主網(wǎng)格線

        .HasMinorGridlines = False ‘指定不顯示分類軸的次網(wǎng)格線

        End With

        With ActiveChart.Axes(xlValue)

        .HasMajorGridlines = True ‘指定顯示數(shù)值軸的主網(wǎng)格線

        .HasMinorGridlines = False ‘指定不顯示數(shù)值軸的次網(wǎng)格線

        End With

        Next r

        esc:

        Exit Sub

        End Sub

        ‘查同名圖表的自定義函數(shù)

        Function find(name As String) As Boolean

        For Each one In Charts

        If one.name = name Then

        find = True

        Exit Function

        End If

        Next one

        find = False

        End Function

        5 圖表樣張

        如圖2所示。

        6 結(jié)論

        所列程序能實(shí)現(xiàn)自動(dòng)繪制Excel折線圖,具有實(shí)用性。

        程序的運(yùn)行,既可以在Excel的Visual Basic編輯器中運(yùn)行,也可以通過(guò)在菜單或工具欄建立相應(yīng)的運(yùn)行命令或按鈕來(lái)運(yùn)行,當(dāng)然也可建立一個(gè)窗體,通過(guò)命令按鈕來(lái)運(yùn)行。因?yàn)槌隽吮疚挠懻摰姆秶?,不再贅述?/p>

        作者簡(jiǎn)介

        劉美麗,講師,研究方向?yàn)橛?jì)算機(jī)應(yīng)用。

        作者單位

        長(zhǎng)沙環(huán)境保護(hù)職業(yè)技術(shù)學(xué)院 湖南省長(zhǎng)沙市 410004

        猜你喜歡
        折線圖
        Optimization Design of Miniature Air Quality Monitoring System Based on Multi-Sensor Fusion Technology
        讓折線圖顯示在一個(gè)單元格中
        再多也不亂 制作按需顯示的折線圖
        美化Excel折線圖表
        精品无码中文字幕在线| 日韩精品免费av一区二区三区| 成人国产一区二区三区| 色一情一区二区三区四区| 色呦呦九九七七国产精品| 午夜精品久久久久久毛片| 国产在线一91区免费国产91| 2022AV一区在线| 国产av一区二区毛片| 真实人与人性恔配视频| 无码国产精品一区二区免费16| 胳膊肘上有白色的小疙瘩| 中文字幕在线乱码av| 亚洲小说图区综合在线| 2021国产视频不卡在线| 国内精品人人妻少妇视频| 国产精品专区第一页天堂2019| 午夜福利啪啪片| 在线观看av手机网址| 午夜国产精品一区二区三区| 久久久久成人精品免费播放动漫| 精品亚洲成a人7777在线观看 | 色综合999| 国产精品毛片av毛片一区二区| 精品国产精品国产偷麻豆| 亚洲妓女综合网99| 日本高清视频在线一区二区三区| 国产一区二区精品亚洲| 精品9e精品视频在线观看| 国产WW久久久久久久久久| 国产精品丝袜美女久久| 成人免费无码视频在线网站 | 蜜桃视频永久免费在线观看 | 97碰碰碰人妻无码视频| 亚洲AV成人无码久久精品老人| 日韩精品欧美激情亚洲综合| 人妻秘书被社长浓厚接吻| 免费乱理伦片在线观看| 午夜亚洲www湿好大| 国产精品成人久久一区二区| 国产精品女老熟女一区二区久久夜|