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

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

下载原始数据后打开, 右击下图的 `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 SubPrivate 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 IfSheet3.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)    '求和NextSheet2.Cells(2, col) = Sheet2.Cells(2, col) / 49                            ' 求平均值NextrowCur = 2For col = 1 To 40rowCur = 2Do While Sheet3.Cells(rowCur, col) <> ""        ' 若不为空,则循环Sheet2.Cells(rowCur + 3, col) = (Sheet3.Cells(rowCur, col) - Sheet2.Cells(2, col)) / Sheet2.Cells(2, col)rowCur = rowCur + 1LoopNext'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").HeightSet 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轴副坐标(右)NextWith .Axes(xlValue, xlPrimary)          ' 对Y主坐标轴的属性进行设置.MinimumScale = -0.01               ' 设置Y主坐标轴的最小值.MaximumScale = 0.1                 ' 最大值.HasTitle = True                    ' 显示这个坐标轴的标题.AxisTitle.Text = "ChangeRate(%)"   ' 设置标题.TickLabels.NumberFormat = "0.0%"   ' 把Y轴坐标值以百分数显示End WithWith .Axes(xlCategory)                  ' 对X坐标轴的属性进行设置.HasTitle = True.AxisTitle.Text = "Sample point".TickLabelSpacing = 20              ' X轴坐标刻度太密了,设置每20个数据显示一个刻度。(设置范围是0-255)End WithEnd WithEnd Sub

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

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

  1. Excel VBA 编程的常用代码

    强制声明变量 Option Explicit 说明:该语句必在任何过程之前出现在模块中. 声明常数 用来代替文字值. Const ' 常数的默认状态就是 Private. Const My = 456 ...

  2. 编程隐藏child指定列_简单的Excel VBA编程问题解答——完美Excel第183周小结

    学习Excel技术,关注微信公众号: excelperfect 下面是2020年11月12日发布的一些简单的ExcelVBA问题的答案,是不是和你想的一样. 1.表达式11mod 3的计算结果是什么? ...

  3. Excel VBA编程常用语句300句

    Excel VBA编程常用语句300句 ************** * VBA 语句集 * * (第 1 辑) * ************** **************** * 定制模块行为 ...

  4. 小福利,用Excel VBA编程制作一个变色小游戏

    小福利,用Excel VBA编程制作一个变色小游戏 设计思想:在正方形的四条边上都是设置循环函数,不断改变颜色和单元格里面的数值. Option ExplicitSub 按钮1_Click() Dim ...

  5. 视频教程-EXCEL VBA编程(excel办公高手必经之路)-Office/WPS

    EXCEL VBA编程(excel办公高手必经之路) Office培训讲师,51CTO金牌讲师,从2005开始从事Office培训至今.擅长Excel.Word.PowerPoint等软件的应用,著有 ...

  6. 陈表达VBA笔记-Excel VBA 编程-在表格做自动筛选的功能

    Excel VBA 编程,在表格做自动筛选的功能 下面的例子是自动筛选85列的内容,筛选内容为处方 Private Sub CommandButton11_Click()     '筛选处方     ...

  7. 怎么在Java里辨别小数_求教java中如何判断一个数是不是小数,求详细代码及解释...

    求教java中如何判断一个数是不是小数,求详细代码及解释 关注:62  答案:2  mip版 解决时间 2021-01-29 22:49 提问者孤酒醉人心 2021-01-29 03:13 求教jav ...

  8. 讯飞配音使用记录:Excel VBA 编程处理多段短文字配音切分及 Hedit、GoldWave 后期处理、编程合成 WAV 文件

    1.注册并购买讯飞配音会员 2.选择需要的主播 3.每天可免费配 80 条语音,每条 1 万字(中文) 4.将多段短文字中间插入 1 秒停顿,配音下载,文字少的可直接使用 GoldWave 录音. 5 ...

  9. excel vba编程代码大全_实战VBA代码一键提取EXCEL中的所有公式!

    有的时候,我们希望把表中的公式提取出来,进行保存! 少量,我们可以手动复制,量大,猝-- 所以我们今天就分享一下如何一键提取 用什么,VBA上吧! 还是老规矩,我们先看一下动画效果 动画效果 制作教程 ...

  10. Excel VBA编程的常用代码

    用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的! 使用Dim语句 Dim a as integer '声明a为整型变量 Dim a '声明a为变体变量 Dim a as s ...

最新文章

  1. python for 循环中使用 remove 删除列表中的元素
  2. 首例人工智能著作权案宣判 软件自动生成的文字内容不构成作品
  3. 鸟哥的Linux私房菜(基础篇)- 简易且较小安装Red Hat 7.2
  4. python 多分类逻辑回归_机器学习实践:多分类逻辑回归(softmax回归)的sklearn实现和tensorflow实现...
  5. 综合示例:自动生成一组新闻
  6. Swift 添加自定义响应事件
  7. 广东--阳江--闸波一天游归来,上PP~~
  8. 【转载】计算几何题目集锦
  9. 正则表达式re.S的用法
  10. linux更换输入法_一日一Linux之一:CentOS 8.1 王者荣耀
  11. 安装TeamViewer的监视器驱动后屏幕亮度无法调节
  12. 首都师范 博弈论 5 4 3 多人合作博弈问题 Shapley值计算之股权与控股权
  13. Linux 串口termios.h分析
  14. n 个元素顺序入栈,则可能的出栈序列有多少种?转
  15. CHIA币的本质认识
  16. 金蝶星空支持mysql吗_金蝶云星空K3 CLOUD SQL 数据库优化
  17. 动态域名解析ipv6 群辉dnspod_群晖IPV6 DDNS设置终极大全(移动用户进)(二)
  18. 计算机硬件系统的运算器又称为,2016计算机专业知识:计算机硬件系统(一)...
  19. OneZero第四周第一次站立会议(2016.4.11)
  20. 计算机系统分盘作用,电脑为什么要分区,分区的好处

热门文章

  1. Ember -Routes
  2. 《惢客创业日记》2021.07.25(周日)当生日遇上套路
  3. 补助系统C语言,领钱了!全国各省信息系统项目管理师证书技能提升补贴说明...
  4. 【模糊神经网络】基于simulink的模糊神经网络控制器设计
  5. Python-Curses模块
  6. 台式机黑苹果独显驱动
  7. 爬虫实战之抓取猫眼电影排行TOP100(使用正则表达式提取数据)
  8. imagenet2012 对应 label
  9. 学习PS2无线手柄解码通讯手册
  10. instsrv.exe和srvany.exe将.exe文件注册为windows服务