999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2017-04-14 18:37:10劉美麗
電子技術與軟件工程 2017年6期

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

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

1 引言

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

本校老師在參與《國家重點基礎研究發(fā)展計劃——973計劃子課題——湖南省酸雨污染現(xiàn)狀、成因及控制對策研究》項目的數(shù)據(jù)處理工作中,需要繪制湖南省十四個地市及全省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ù)的逐年、逐季、逐月的變化折線圖。對于這種相同數(shù)據(jù)結(jié)構(gòu)的大量圖表繪制,用“圖表向?qū)А眮硪粡垙埨L制顯然是令人生畏的,而使用Excel VBA對Excel的作圖功能進行二次開發(fā),將可大大提高工作效率。

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

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

2.1 Add()方法

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

Set mychart = charts.Add

表示在活動圖表之前插入一個新的圖表,并將返回值保存在mychart對象變量中,以便需要時通過該變量來訪問該圖表。

2.2 Location()方法

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

Chart.Location(Where,Name)

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

2.3 SetSourceData()方法

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

Chrat.SetSourceData(Source,PlotBy)

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

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

2.4 SeriesCollection()方法

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

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

Values和XValues屬性必須用Range對象來指定,不可指定為變量的值。如:

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

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

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

2.5 Axes()方法

Chart對象的Axes()方法返回圖表上單個坐標軸或坐標軸集合的某個對象。該方法的語法如下:

Chart.Axes(Type,AxisGroup)

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

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

2.6 ChartType屬性

ChartType屬性用于指定圖表的類型。常用圖表類型和ChartType 屬性值的對應關系如表1。

3 作圖數(shù)據(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 ‘錯誤陷井

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)

‘計算數(shù)據(jù)源的首個單元格的行號、列號和總列數(shù)

i = isect.Row

m = isect.Column

n = m + isect.Columns.Count – 1

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

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ù)點折線圖

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 ‘指定要顯示圖表標題

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

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

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

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

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

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é)論

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

程序的運行,既可以在Excel的Visual Basic編輯器中運行,也可以通過在菜單或工具欄建立相應的運行命令或按鈕來運行,當然也可建立一個窗體,通過命令按鈕來運行。因為超出了本文討論的范圍,不再贅述。

作者簡介

劉美麗,講師,研究方向為計算機應用。

作者單位

長沙環(huán)境保護職業(yè)技術學院 湖南省長沙市 410004

主站蜘蛛池模板: 日本午夜精品一本在线观看| 国产一区二区三区在线观看视频 | 国产精品国产主播在线观看| 日韩在线中文| 亚洲精品国产自在现线最新| 欧美性精品不卡在线观看| 欧美日韩va| 亚洲精品手机在线| 免费国产好深啊好涨好硬视频| 青青操国产| 又猛又黄又爽无遮挡的视频网站| av在线人妻熟妇| 亚洲日韩AV无码精品| 麻豆AV网站免费进入| 五月婷婷综合网| 亚洲va欧美va国产综合下载| 久久天天躁夜夜躁狠狠| 播五月综合| 四虎影院国产| 一区二区理伦视频| 日韩欧美国产综合| 国产在线一区二区视频| 亚洲一区波多野结衣二区三区| 成人毛片免费观看| 最新无码专区超级碰碰碰| 国内精自视频品线一二区| 精品国产免费人成在线观看| 国产精品尤物在线| 日本草草视频在线观看| 亚洲无码视频图片| 国产成人h在线观看网站站| 伊人天堂网| 国产剧情无码视频在线观看| 亚洲综合日韩精品| 农村乱人伦一区二区| www.91在线播放| 精品国产亚洲人成在线| 污污网站在线观看| 国产精品视频导航| 亚洲成人精品| 亚洲综合天堂网| 国产福利在线免费| 精品伊人久久久久7777人| 四虎成人精品在永久免费| 日本在线国产| aaa国产一级毛片| 亚洲精品久综合蜜| 99久久国产综合精品2020| 九九热精品视频在线| 亚洲日韩精品综合在线一区二区| 日日拍夜夜嗷嗷叫国产| 天堂亚洲网| 就去色综合| 亚洲综合香蕉| 91系列在线观看| 亚洲大尺码专区影院| 久久亚洲美女精品国产精品| 国产精品任我爽爆在线播放6080| 久久精品无码中文字幕| 91在线视频福利| 久久久久亚洲AV成人网站软件| 国产91在线|中文| 91免费国产高清观看| 国产午夜精品一区二区三区软件| 日本在线视频免费| 精品国产成人高清在线| 国产女人爽到高潮的免费视频 | 亚洲国产精品日韩av专区| 欧美一级在线看| 在线观看av永久| 国产精品三级av及在线观看| 园内精品自拍视频在线播放| 国产真实乱子伦精品视手机观看| 日韩精品久久久久久久电影蜜臀| 久久特级毛片| 国产本道久久一区二区三区| 久久国产精品娇妻素人| 波多野一区| 久久99国产乱子伦精品免| 露脸真实国语乱在线观看| 玩两个丰满老熟女久久网| 亚洲精品第一页不卡|