excel VBA 编程,数据处理,并画图,详细代码,加解释

您所在的位置:网站首页 excel表格怎么画图标 excel VBA 编程,数据处理,并画图,详细代码,加解释

excel VBA 编程,数据处理,并画图,详细代码,加解释

2024-07-13 16:35:38| 来源: 网络整理| 查看: 265

基础的东西就不讲了,详情请看:入门瞧一瞧这里

本教程所用数据和代码连接:本节教程所需要的数据和代码

下载原始数据后打开, 右击下图的 `Summary` 并选择 `View Cpde` 查看代码

主要的代码在 `Sheet3(RawData)` 以及 `Module1` 中,如下图:

`Sheet3(RawData)` 中的代码主要是完成了事务触发功能,即只要 `Sheet3(RawData)` 中的数据发生变化,就会触发这里的 `Worksheet_Change` 函数,代码如下:

'Private Sub Worksheet_Change(ByVal Target As Range) ' If Target.Address = "$D$2" Then ' 具体到某个单元格变化才触发事件 ' 'MsgBox ("Cell D2 Has Changed.") ' Call MyCode ' End If 'End Sub Private Sub Worksheet_Change(ByVal Target As Range) ' 只要工作表内容发生变化,就会触发 Call MyCode ' 这里调用了在 Module1 中名为 MyCode 的函数处理这个事务 End Sub

`Module1` 中的代码主要就是对数据的处理以及画图了,如下:

Sub MyCode() Sheet2.UsedRange.ClearContents ' 清除Sheet2的所有单元格内容 If Sheet1.ChartObjects.Count > 0 Then ' 删除Sheet3工作表的所有图表。当对一个没有图表的工作表进行删除操作时会报错 Sheet1.ChartObjects.Delete ' 所有要先进行判断,如果图表数大于0才执行删除操作 End If Sheet3.Rows(1).Copy Destination:=Sheet2.Rows(1) ' 将Sheet3第1行的数据拷贝到Sheet2的第1行 Sheet3.Rows(1).Copy Destination:=Sheet2.Rows(4) For col = 1 To 40 ' 求多列指定区域数据的平均值 For cnt = 2 To 50 ' 求指定列的第(2:50)个数据的平均值 Sheet2.Cells(2, col) = Sheet2.Cells(2, col) + Sheet3.Cells(cnt, col) '求和 Next Sheet2.Cells(2, col) = Sheet2.Cells(2, col) / 49 ' 求平均值 Next rowCur = 2 For col = 1 To 40 rowCur = 2 Do While Sheet3.Cells(rowCur, col) "" ' 若不为空,则循环 Sheet2.Cells(rowCur + 3, col) = (Sheet3.Cells(rowCur, col) - Sheet2.Cells(2, col)) / Sheet2.Cells(2, col) rowCur = rowCur + 1 Loop Next 'MsgBox rowCur ' 验证行数是否正确 ' 以下设计图的区域 x = Sheet2.Range("A1", "A25").Left ' 设置图表容器的左边缘 y = Sheet2.Range("A1", "Q1").Top ' 设置图表容器的上边缘 w = Sheet3.Range("A1:Q1").Width ' h = Sheet3.Range("A1:A25").Height Set Ch1 = Sheet1.ChartObjects.Add(x, y, w, h) ' 新建曲线图对象 Ch1.Name = "Results" With Ch1.Chart ' With是一个代码块,由End With结束。表示这个with块中的所有代码都是对Ch1.Chart的属性进行设置。 .HasTitle = True ' 如果没有With块,这句完全能用"Ch1.Chart.HasTitle = True"代替 .ChartTitle.Text = Ch1.Name ' 把图表容器的名字作为图表的标题 .ChartTitle.Left = 350 ' 设置图表标题的位置 .ChartTitle.Top = 10 .PlotArea.Width = 700 ' 设置图表容器中 画图区域 相对于图表容器的位置 .PlotArea.Left = 30 ' 图表容器中除了画图区域,还有标题,图列,以及坐标轴名字等其他对象 .PlotArea.Top = 15 ' 设置合适的 画图区域,是为了其他对象更好的显示 .PlotArea.Height = 300 .Legend.Position = xlLegendPositionTop ' 将图例放在画图区域的上方。图例就是在一个有多个折线的图中,对每个折线含义的说明 .Legend.Left = 70 ' 因为按上面的方法设置的图例位置稍微有点不太理想,所有这里对图例位置进行微调。 .Legend.Top = 46 ' 注意这里的微调值是相对于图表容器的左上角,而不是 画图区域 .ChartType = xlLine ' 设置图表类型为折线图 For i = 1 To 40 .SeriesCollection.NewSeries .SeriesCollection(i).Values = Range(Sheet2.Cells(5, i), Sheet2.Cells(rowCur + 2, i)) '.SeriesCollection(1).XValues = Sheet2.Range("B" & startRows, "B" & endRows) ' 选择X轴的数据源 .SeriesCollection(i).Name = Sheet2.Cells(1, i) ' 设置图例的名字 .SeriesCollection(i).AxisGroup = 1 '选择Y轴主坐标(左),2表示用Y轴副坐标(右) Next With .Axes(xlValue, xlPrimary) ' 对Y主坐标轴的属性进行设置 .MinimumScale = -0.01 ' 设置Y主坐标轴的最小值 .MaximumScale = 0.1 ' 最大值 .HasTitle = True ' 显示这个坐标轴的标题 .AxisTitle.Text = "ChangeRate(%)" ' 设置标题 .TickLabels.NumberFormat = "0.0%" ' 把Y轴坐标值以百分数显示 End With With .Axes(xlCategory) ' 对X坐标轴的属性进行设置 .HasTitle = True .AxisTitle.Text = "Sample point" .TickLabelSpacing = 20 ' X轴坐标刻度太密了,设置每20个数据显示一个刻度。(设置范围是0-255) End With End With End Sub

我感觉结合我上一篇的讲解,很容易看懂了,没甚好说的了。

 

 

 

 

 

 

 

 

 



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭