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

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

下载原始数据后打开, 右击下图的 `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. linux系统下搜索文件是否存在的五种方法
  2. 解决pip is configured with locations that require TLS/SSL问题
  3. beego07----web博客
  4. 写出程序删除链表中的所有接点
  5. 词云制作 Python
  6. 统计学习:协方差和相关性
  7. BCH码和m序列参数估计(梅西迭代算法求多项式的MATLAB实现)
  8. Linux系统查看系统硬件,linux怎么查看系统硬件信息
  9. 第二章 寄存器基础概念
  10. mybatis逆向工程用idea通过pom插件generator生成代码指令(mysql,oracle,sqlserver)
  11. jquerymobile iscrollview
  12. 判断用户输入的是数字还是字符串
  13. BZOJ2134 单选错位
  14. mycat 分表子查询_mysql分库分表之mycat中间件解决方案
  15. VB.NET Crystal Reports 水晶报表 自定义工具栏
  16. linux系统发育树的构建步骤,步一步教你如何做系统进化树
  17. 熬夜爆肝!C++实现圣域之战!(修过码)
  18. tomcat如何知道WebRoot是web根目录?
  19. 可禁用计算机服务,哪些Microsoft服务项目可以禁用以提高 电脑速度
  20. 84个常用的数据源网站分享!(保持更新,建议收藏)

热门文章

  1. 北京内推 | 微软亚洲研究院视觉计算组招聘研究与开发实习生
  2. 美通企业日报 | 英国名校哈罗落户深圳;绿叶与克利夫兰医学中心在沪打造未来医院...
  3. 计算机基础---04ppt篇(world转化为ppt,字体设计,形状,ppt背景,音频,视频动画效果,模板推荐,插件推荐)
  4. PDA用ActiveSync同步上网 方法
  5. STM32高速脉冲发波方案
  6. 金蝶应收应付模块流程_金蝶财务软件里的应收应付模块核算哪些会生
  7. 电脑开机蓝屏时要怎么解决修复?哪种方便比较好?
  8. 免费网站源码 织梦模板下载
  9. html 源码_html制作个人博客网站模板源码下载
  10. html flash mp3播放器,网页实用最简单的flash mp3播放器代码-多样式