zoukankan      html  css  js  c++  java
  • 第一种vba自动筛选数据自动生成折线图的脚本(自动化)

    Sub 数据整理()
    Dim iAreaCount As Integer
    Dim i As Integer
    Dim sTemp, sTemp2 As String
    Dim iTemp As Long
    Dim bFind As Boolean


    Dim ValueName() As String
    Dim ValueValue() As Double
    Dim ValueDate() As Date

    Dim iHour, iMinute, iSecond As Integer
    Dim iIndex As Integer

    Worksheets("Sheet1").Activate
    Range("A1").CurrentRegion.Select
    iAreaCount = Selection.Rows.Count

    ReDim ValueName(iAreaCount)
    ReDim ValueValue(iAreaCount)
    ReDim ValueDate(iAreaCount)

    Sheets.Add After:=Sheets("Sheet1")
    ActiveSheet.Name = "CPU"

    Sheets.Add After:=Sheets("Sheet1")
    ActiveSheet.Name = "MEM"


    For i = 1 To iAreaCount
    ValueName(i) = Worksheets("Sheet1").Cells(i, 1).Value
    ValueValue(i) = Worksheets("Sheet1").Cells(i, 2).Value
    If ValueName(i) Like "*cpu*" Then ValueValue(i) = ValueValue(i) / 100
    If ValueName(i) Like "*mem*" Then ValueValue(i) = ValueValue(i) / 1073741824
    iTemp = Worksheets("Sheet1").Cells(i, 3).Value
    iHour = Int((iTemp Mod 86400) / 3600)
    iMinute = Int((iTemp Mod 3600) / 60)
    iSecond = Int(iTemp Mod 60)
    sTemp = Str(iHour) & ":" & Str(iMinute) & ":" & Str(iSecond)
    ValueDate(i) = sTemp

    Next i


    For i = 1 To iAreaCount
    bFind = False
    Dim sName As String
    sName = Right(ValueName(i), 30)
    For Each sht In Sheets
    If sName = sht.Name Then bFind = True
    Next sht

    If bFind Then
    Worksheets(sName).Activate
    Range("A1").Select
    Range("A1").CurrentRegion.Select
    iTemp = Selection.Rows.Count + 1
    sTemp2 = Mid(Str(iTemp), 2)

    sTemp = "A" & sTemp2
    Range(sTemp).Select
    ActiveCell.FormulaR1C1 = ValueName(i)

    sTemp = "B" & sTemp2
    Range(sTemp).Select
    ActiveCell.FormulaR1C1 = ValueValue(i)

    sTemp = "C" & sTemp2
    Range(sTemp).Select
    ActiveCell.FormulaR1C1 = ValueDate(i)

    Else
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = sName
    Range("A1").Select
    ActiveCell.FormulaR1C1 = ValueName(i)
    Range("B1").Select
    ActiveCell.FormulaR1C1 = ValueValue(i)
    Range("C1").Select
    ActiveCell.FormulaR1C1 = ValueDate(i)
    End If

    Next i


    Dim rng1, rng2 As Range


    'cpu chart
    Dim ChtCPU As Chart

    Worksheets("CPU").Activate
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlLine
    ActiveChart.HasTitle = True
    ActiveChart.ChartTitle.Text = "CPU占用"


    Dim iChartIndex As Integer
    iChartIndex = 1

    For Each sht In Sheets
    If sht.Name Like "*cpu*" Then
    Worksheets(sht.Name).Activate
    Range("A1").Select
    Range("A1").CurrentRegion.Select
    iTemp = Selection.Rows.Count
    sTemp2 = Mid(Str(iTemp), 2)
    sTemp = Worksheets(sht.Name).Cells(1, 1).Value

    Set rng1 = Sheets(sht.Name).Range("B1", "B" & sTemp2)
    Set rng2 = Sheets(sht.Name).Range("C1", "C" & sTemp2)
    rng1.NumberFormat = "0.0%"
    Worksheets("CPU").Activate
    Set ChtCPU = ActiveSheet.ChartObjects(1).Chart
    ChtCPU.SeriesCollection.NewSeries
    ChtCPU.SeriesCollection(iChartIndex).Values = rng1
    ChtCPU.SeriesCollection(iChartIndex).XValues = rng2
    ChtCPU.SeriesCollection(iChartIndex).Name = sTemp

    iChartIndex = iChartIndex + 1


    End If

    Next sht


    'memory chart

    Dim ChtMEM As Chart

    Worksheets("MEM").Activate
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlLine
    ActiveChart.HasTitle = True
    ActiveChart.ChartTitle.Text = "内存占用(G)"

    iChartIndex = 1

    For Each sht In Sheets
    If sht.Name Like "*mem*" Then
    Worksheets(sht.Name).Activate
    Range("A1").Select
    Range("A1").CurrentRegion.Select
    iTemp = Selection.Rows.Count
    sTemp2 = Mid(Str(iTemp), 2)
    sTemp = Worksheets(sht.Name).Cells(1, 1).Value
    Set rng1 = Sheets(sht.Name).Range("B1", "B" & sTemp2)
    rng1.NumberFormat = "0.00"
    Set rng2 = Sheets(sht.Name).Range("C1", "C" & sTemp2)

    Worksheets("MEM").Activate
    Set ChtMEM = ActiveSheet.ChartObjects(1).Chart
    ChtMEM.SeriesCollection.NewSeries
    ChtMEM.SeriesCollection(iChartIndex).Values = rng1
    ChtMEM.SeriesCollection(iChartIndex).XValues = rng2
    ChtMEM.SeriesCollection(iChartIndex).Name = sTemp

    iChartIndex = iChartIndex + 1


    End If

    Next sht






    End Sub

  • 相关阅读:
    点击鼠标获得坐标位置
    广告的字一个一个的显示出来
    纯css实现下拉菜单的效果
    用css3写出的倒三角形
    MySQL(三)
    Navicat之MySQL连接(二)
    MySQL 的安装与使用(一)
    Servlet(二)
    Servlet(一)
    Linux常用命令大全
  • 原文地址:https://www.cnblogs.com/liuwenhao/p/4503226.html
Copyright © 2011-2022 走看看