VBA(Visual Basic for Applications)是VB的一种宏语言。用来扩展应用程式的功能。特别是Microsoft Office软件。

转载请注明原文地址:http://blog.csdn.net/ts_dchs/article/details/50318345

1 使用原因

在处理传感器数据文件的时候。有些节点有丢包严重的现象。这样就会产生时间的累计误差。

所以须要依据包序号将之后的传感器数据填在合适的位置,也就是为丢包流出空行。

这样手动对照的方式非常不方便,所以想到用代码方式解决。

VBA提供了这个机会。i

之后的介绍内容以有用为准,不做具体介绍。

详见网络或者相关书籍。

2 基本准备

须要的excel文件是能够载入宏的文件。

与普通Excel文件不同。
普通:xlsx 可载入宏:xlsm
能够自己有一个能够载入宏的文件,处理完数据后复制过去。
假设要执行宏须要在选项的信任中心打开启用宏

这种设定非常easy让机器中招。所以用完后最好关掉。

3 开启编程环境

右键sheet标签,“查看代码”打开BVA编辑页面。
当前编辑的就是对应的sheet的代码。

高速開始:两个下拉菜单选为worksheet和BeforeDoubleClick来使得在表格中双击之前执行代码。
得到这样一个框架:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
...
End Sub

其它选项百度

4 基本的语法

(一般首字母大写的为关键字,全小写为參数)
获取一个单元格的值,对还有一个赋值

Sheet4.Cells(2, 1) = Sheet4.Cells(1, 1)

最后没有分号。

在保存之后,在Excel文件对应Sheet中双击能够看到结果。

变量声明
声明一个整整型的i

Dim i As Integer

调试相关
F5执行脚本,一般能够在一个自定义的宏中先測试好,在放到能够和Excel操作相关的宏中。比方如今自己的宏中測试好再放入双击操作中。

打印语句。用Debug对象。

在“马上窗体”查看输出。“马上窗体”能够在视图中打开。

Dim i, j As Integer
i = 5
j = 10
' 单引號作为行凝视
' 打印多个元素,多个元素用分号隔开,VBA可能会自己加上。
Debug.Print i; "x"; j; "="; i * j; "  ";
' 打印空行
Debug.Print

条件语句

If x > y Then[statements]
ElseIf x>z Then[statements]
Else[statements]
End If

For Next语法

For counter = start To end [Step step][statements][Exit For] ' like break[statements]
Next [counter]

eg.获取自定义的參数元素后填入一列serial number:
(在Sheet的(2,1)(2,2)本别定义起始值 1,终止值 20,(2,3)(2,4)分别定义数据起始行号 5,要放置结果的列号 7。)

Sub copyTest()Dim tsart, tend, tcol, trow As Integertstart = Sheet4.Cells(2, 1)tend = Sheet4.Cells(2, 2)trow = Sheet4.Cells(2, 3)tcol = Sheet4.Cells(2, 4)Debug.PrintDebug.Print "start index: "; tstartDebug.Print "end index: "; tendDebug.Print "result start:("; trow; ", "; tcol; ")"Dim i As IntegerFor i = tstart To tend Step 1Sheet4.Cells(trow + i - 1, tcol) = iNext i
End Sub

也能够针对一个区域来做:

For Each c In Range("a1:c5")i = i + 1c.Value = i
Next

这样会先填充一行,再填充下一行。

* While Wend *

While condition(s)[statements 1][statements 2]...[statements n]
Wend

5 一个实例

利用VBA将一系列传感器数据按序填写到新的位置来自己主动空出丢包的行。
比方收到数据的包序是101,102,104,105,则在新的位置写入时增加103行,后面为空。(在Sheet的(2,1)(2,2)本别定义起始值。终止值。(2,3)(2,4)分别定义数据起始行号。要放置结果的列号。

原始数据占用列1-5。从第5行開始放。

新数据的開始放在表格定义的位置,并在第一列增加连续的serial number)程序例如以下:

Sub copyTest()Dim tsart, tend, tcol, trow As Integertstart = Sheet4.Cells(2, 1)tend = Sheet4.Cells(2, 2)trow = Sheet4.Cells(2, 3)tcol = Sheet4.Cells(2, 4)Debug.PrintDebug.Print "start index: "; tstartDebug.Print "end index: "; tendDebug.Print "result start:("; trow; ", "; tcol; ")"Dim i, i2, j As Integeri = 0i2 = 0j = 0While i < (tend - tstart + 1)Sheet4.Cells(trow + i, tcol) = i + tstartIf Sheet4.Cells(trow + i2, 1) = i + tstart ThenFor j = 1 To 5 Step 1Sheet4.Cells(trow + i, tcol + j) = Sheet4.Cells(trow + i2, j)Next ji2 = i2 + 1' Debug.Print i2End Ifi = i + 1WendDebug.Print i2; "total Data number: "; i2
End Sub

notification
source: 资料源于网络。个人所学有限。若有错误和不足还请指教,我会及时更正。Terrence Zhou.
http://blog.csdn.net/ts_dchs
转载请注明原址

转载于:https://www.cnblogs.com/gavanwanggw/p/6993327.html

Excel VBA简单使用——数据缺失处理相关推荐

  1. Excel VBA简单需求实践,包含对Excel基本的读取,校验,复写操作

    该文为想要学习VBA编程的会计和编程同学有使用VBA实现Excel自动化处理和一定的个性化定制Excel操作提供参考 第一篇为::VBA简单语法 第二篇为: Excel 编写第一个简单的VBA程序 第 ...

  2. Excel VBA简单语法

    摘要: 该文为想要学习VBA编程的会计和编程同学有使用VBA实现Excel自动化处理和一定的个性化定制Excel操作提供参考 第一篇为::VBA简单语法 第二篇为: Excel 编写第一个简单的VBA ...

  3. 数据清洗 Chapter07 | 简单的数据缺失处理方法

      大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

  4. Excel VBA 学习总结 - 数据验证与正则表达式

    数据结构有云:程序=数据+操作.从中可以看出,数据才是程序的核心对象,每个程序所有的操作和意图都是围绕数据展开的.每个程序的结构基本都分为三个部分:输入,处理,输出.输入是接收用户的数据,处理过程是通 ...

  5. Excel VBA解析JSON数据

    JSON本质上是按照JavaScript对象.数组书写的一堆字符串,很可惜VBA直到目前为止都没有相应解析的方法.对于简单的数据可以用split方法.或者使用正则表达式来提取,如果过于复杂就需要用Ja ...

  6. Excel VBA:更改图表数据标记大小和曲线粗细

    在Excel中插入图表后,有时曲线较多,数据标记又太大,而且线条较粗,多条曲线挤压在一起,显得很丑.为了便于观察,可以通过右键更改曲线的粗细和设置数据标记的大小,但线条较多时又是一件很麻烦的事.这里通 ...

  7. 利用Excel VBA实现批量数据分组转置

    问题:如上图所示,按lon,lat分组,再进行转置. VBA代码: Sub admin()Dim conn, xRs, xFdSet conn = CreateObject("ADODB.C ...

  8. DEV GridControl导入导出Excel文件 - 简单表格数据导入(Microsoft.Office自带)

    1.命名空间 using DevExpress.XtraEditors; using DevExpress.XtraGrid; using DevExpress.XtraGrid.Views.Grid ...

  9. java exce对象清空,Excel VBA:清除数据透视表中的项目

    我是VBA的新手...我正在尝试编写一个宏,它将清除名为"Product Family"的数据透视表过滤器中的所有选项,并仅选择名称包含在单元格"B33"中的项 ...

最新文章

  1. 未来已来:全球XR产业洞察
  2. PHPUnit实践二(生命周期)
  3. go语言操作xlsx文件
  4. python程序写完后点哪个运行快_让你的Python运行更快
  5. 设计模式之笔记--简单工厂模式(Simple Factory)
  6. .anonymous springsecurity需要登陆嘛_springSecurity之java配置篇
  7. HTML img 标签的 alt 属性
  8. 粒子效果的开始和结束颜色属性
  9. SQL Where 字符串拼接
  10. Maxtocode 2.0 试用版发布
  11. 从事计算机工作的应该,未来想从事计算机方面的工作,现在应该学习些什么东西?...
  12. jmeter压力测试
  13. arduino 有源 蜂鸣器_(二十)arduino入门:蜂鸣器的使用
  14. Win10下双系统Ubuntu14.04+GTX1070+CUDAcuDNN+Tensorflow环境搭建
  15. c语言switch有什么作用,c语言switch语句如何使用
  16. python之测试类
  17. 大话云原生数据库中的存算分离
  18. 一篇文章带你了解新能源汽车整车控制器VCU 硬件在环(HiL)仿真测试方案
  19. JAVA在鼠标点击位置绘制圆,单击鼠标后在JPanel上绘制圆圈
  20. oracle分页排序查询,Oracle分页查询中排序与效率问题

热门文章

  1. 职中计算机应用基础期末考试题,职中计算机应用基础期末试卷.doc
  2. 北京科技大学计算机与通信工程学院计算机科学与技术系导师研究方向,北京科技大学计算机科学与技术系硕士生导师孙昌爱_计算机考研导师...
  3. gogoclient java_链路跟踪-GRPC请求 - GoFrame官网 - 类似PHP-Laravel, Java-SpringBoot的Go企业级开发框架...
  4. 如何避免单元测试陷阱?
  5. 软件测试工程师怎么样面试上好的公司?
  6. matlab虚拟现实之V-Realm Builder2复制技巧(修改)
  7. java方法不写访问权限_【JAVA小白】 问关于访问权限的问题,写接口遇到错误
  8. 腾讯 监控系统服务器数据采集,腾讯天津数据中心机房监控项目
  9. mysql 错误连接锁死_MySQL 8.0.19支持输入3次错误密码锁定账户功能(例子)
  10. web怎么在圆圈里画半html,在WEB里绘制爱心