FLUX數(shù)據(jù)后處理,使用VBA在EXCEL中批量插入插入散點圖

FLUX數(shù)據(jù)后處理,使用VBA在EXCEL中批量插入插入散點圖


Sub ChartsInsert()
Dim num As Integer
num = 1900
  '定義數(shù)據(jù)量
For Each sh In Worksheets
    '遍歷工作表,尋找A1單元格為"Labels"的表
    If sh.Range("A1").Value = "Labels" Then
    Worksheets("CHARTS").Select
    '激活"CHARTS"表插入圖表,
    Worksheets("CHARTS").Shapes.AddChart.Select
    '用With語句省略重復(fù)書寫ActiveChart對象代碼,ActiveChart代表上一行中被選中的新插入圖表
    With ActiveChart
        'CharType是圖表類型屬性,xlXYScatter代表散點圖xlXYScatterSmoothNoMarkers
        .ChartType = xlXYScatterSmoothNoMarkers
       'SeriesCollection代表圖表系列對象集合,NewSeries方法表示新增圖表系列,相當(dāng)于圖表數(shù)據(jù)源對話框中的“添加數(shù)據(jù)系列”
        Dim XV, YV, NAME, COL As String
        XV = sh.NAME + "!$B$2:$B$" + LTrim(Str(num))
        Dim i As Integer
        '遍歷工作表的列,第一列為空,第二列為時間,其余列為數(shù)據(jù),為每一列添加曲線系列
        For i = 3 To sh.Range("IV1").End(xlToLeft).Column
        .SeriesCollection.NewSeries
        'SeriesCollection(i)代表新插入的第i個數(shù)據(jù)系列,Name是數(shù)據(jù)系列名稱,這和圖表數(shù)據(jù)源對話框中的“系列名稱”是一樣的。
        'Chr()函數(shù)功能在于把代碼開頭的i所代表的數(shù)字換成A-Y字母列名,LTrim()去掉字符串左側(cè)的空格
         If i < 27 Then
            COL = Chr(64 + i)
        Else
            COL = Chr(64 + CInt(i / 26)) + Chr(64 + (i Mod 26))
        End If
        YV = sh.NAME + "!$" + COL + "$2:$" + COL + "$" + LTrim(Str(num))
        NAME = "=" + sh.NAME + "!$" + COL + "$1"
        .SeriesCollection(i - 2).NAME = NAME
        .SeriesCollection(i - 2).XValues = XV
        .SeriesCollection(i - 2).Values = YV
        .ChartTitle.Text = "Chart of " + sh.NAME
        Next
End With
    End If
Next
'以下代碼實現(xiàn)圖表縱向排開效果
With Worksheets("CHARTS")
    'ChartObjects是所有圖表類對象集合,Left屬性代表圖表距離Excel編輯界面上邊界距離,這里以集合形式將所有圖表的Left屬性設(shè)置為0
    .ChartObjects(1).Top = 0
    .ChartObjects.Left = 0
.ChartObjects.Height = 400
.ChartObjects.Width = 1000
    'Height代表圖表的寬度,因為每張圖表寬度都是一樣的,如將圖表縱向排開的話,則從第二個圖表開始,Left屬性值應(yīng)該是上一張圖表的高度Height與上一張圖表序號(j-1)之乘積。因圖表高度相同,故可以直接使用ChartObjects(1).Height(第一張圖表的高度)
    For j = 2 To .ChartObjects.Count
        .ChartObjects(j).Top = .ChartObjects(1).Height * (j - 1)
    Next
End With
End Sub

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容