Excel VBA简单使用——数据缺失处理

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 Integer
    tstart = Sheet4.Cells(2, 1)
    tend = Sheet4.Cells(2, 2)
    trow = Sheet4.Cells(2, 3)
    tcol = Sheet4.Cells(2, 4)

    Debug.Print
    Debug.Print "start index: "; tstart
    Debug.Print "end index: "; tend
    Debug.Print "result start:("; trow; ", "; tcol; ")"

    Dim i As Integer
    For i = tstart To tend Step 1
        Sheet4.Cells(trow + i - 1, tcol) = i
    Next i
End Sub

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

For Each c In Range("a1:c5")
  i = i + 1
  c.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 Integer
    tstart = Sheet4.Cells(2, 1)
    tend = Sheet4.Cells(2, 2)
    trow = Sheet4.Cells(2, 3)
    tcol = Sheet4.Cells(2, 4)

    Debug.Print
    Debug.Print "start index: "; tstart
    Debug.Print "end index: "; tend
    Debug.Print "result start:("; trow; ", "; tcol; ")"

    Dim i, i2, j As Integer
    i = 0
    i2 = 0
    j = 0
    While i < (tend - tstart + 1)
        Sheet4.Cells(trow + i, tcol) = i + tstart
        If Sheet4.Cells(trow + i2, 1) = i + tstart Then
            For j = 1 To 5 Step 1
                Sheet4.Cells(trow + i, tcol + j) = Sheet4.Cells(trow + i2, j)
            Next j
            i2 = i2 + 1
            ‘ Debug.Print i2
        End If
        i = i + 1
    Wend
    Debug.Print i2; "total Data number: "; i2
End Sub


notification

source: 资料源于网络。个人所学有限。若有错误和不足还请指教,我会及时更正。Terrence Zhou.

http://blog.csdn.net/ts_dchs

转载请注明原址

时间: 2024-10-13 07:30:49

Excel VBA简单使用——数据缺失处理的相关文章

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

问题:如上图所示,按lon,lat分组,再进行转置. Sub admin() Dim conn, xRs, xFd Set conn = CreateObject("ADODB.Connection") conn.Open "Provider=Microsoft.Jet.Oledb.4.0;" & _ "Extended Properties= 'Excel 8.0;hdr=yes;IMEX=1' ;" & _ "Dat

别怕excel vba其实很简单(第2版)pdf

下载地址:网盘下载 内容简介  · · · · · · 对于大部分没有编程基础的职场人士来说,在学习VBA时往往会有很大的畏难情绪.本书正是针对这样的人群,用浅显易懂的语言和生动形象的比喻,并配合大量插画,对Excel中看似复杂的概念和代码,从简单的宏录制.VBA编程环境和基础语法的介绍,到常用对象的操作与控制.执行程序的自动开关-对象的事件.设计自定义的操作界面.调试与优化编写的代码,都进行了形象的介绍. 本书适合那些希望提高工作效率的职场人士,特别是经常需要处理和分析大量数据的用户,也适合财

Office EXCEL VBA数组如何使用

Excel VBA数组入门教程 1. 前言:不要把VBA数组想的太神秘,它其实就是一组数字而已. 2. 数组的维数: Sub 数组示例()  Dim x As Long, y As Long  Dim arr(1 To 10, 1 To 3)  '创建一个可以容下10行3列的数组空间  For x = 1 To 4    For y = 1 To 3       arr(x, y) = Cells(x, y)  '通过循环把单元格区域a1:c4的数据装进数组中    Next y  Next x

用VB.NET(Visual Basic 2010)封装EXCEL VBA为DLL_COM组件(二)

--将EXCEL VBA代码移植到VB.NET .NET是微软公司在2002年推出的全新编程框架,支持多种语言应用程序开发.使用Visual Basic在Microsoft .NET Framework上编程,这就是Visual Basic.NET,简称VB.NET. VB.NET是Microsoft Visual Studio .NET组件中的重要组成部分,是VB6.0的后续版本,VB.NET仍使用VB的基本语法,二者几乎在90%以上保持相似或相同,虽然Excel VBA代码不能完全像移植到V

Excel VBA 从一个工作簿查找另一个一个工作簿中的一些内容复制到另外一个工作簿

帮朋友来写个Excel VBA 以前写过ASP,所以对vb略微熟悉,但VBA 没有仔细研究过. 以前只研究过 vba 写一个 计算个人所得税的程序. 这次写的功能也算是简单,但也耗费了两天的功夫. 需求: 1 从[操作]表中,查找最后一行的数据,每一列 都为关键字 2 遍历这些关键字,从[总表]中查询这个关键字,把这一行后面的内容复制到 [预算]表中去 3 把[操作]中制定内容复制到[信息统计]中 Function Get操作NullLine() ' '从 操作表 获取最后一个有数据下面的空行

excel vba 数据分析

(Visual Basic Application) VBA(Visual Basic for Application)是Microsoft Office系列软件的内置编程语言,其语法结构与Visual Basic编程语言互相兼容,采用的是面向对象的编程机制和可视化的编程环境. 第一节 标识符 一.定义 标识符是一种标识变量.常量.过程.函数.类等语言构成单位的符号,利用它可以完成对变量.常量.过程.函数.类等的引用. 二.命名规则 1)  字母打头,由字母.数字和下划线组成,如 A987b_2

利用java反射机制实现读取excel表格中的数据

如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.List<Book>等,所以需要使用泛型机制去实现.下面会给出代码,可能会稍微复杂一点,但注释很清晰,希望大家耐心阅读. 在上代码之前简单说一下思路: 1.excel表格必须有表头,且表头中各列的值要与实体类的属性相同: 2.先读取表头信息,然后获取表头列数,接着确定需要使用的set方法的名称,并存到数

Excel VBA(宏):添加宏

写在前面: 1.编写宏,打开VBA,双击ThisWorkbook对当前工作薄进行编写宏:双击Sheet1,对整个sheet编写宏: 或者创建模块,在模块里,编写.调试代码. 打开VBA的方法见第一讲,结合常用窗口进行编写.调试. 2.部分对象有提示,如Dim a As,敲击空格后有提示. 3.所有宏要运行,必须启动宏.(2007版启动宏,点击表格左上角 "excel选项" "信任中心" "信任中心设置" "启用宏") 4.&q

2017-5-29 Excel VBA 小游戏

---恢复内容开始--- 转一个Excel VBA的小游戏,最近对excel有了更深入的了解,功能很强大,也刷新了我对待事情的态度. 一.准备界面 我们先来把游戏界面准备好,选中前4行,行高调成50,这时候单元格就近似一个正方形.然后给4*4的单元格加上全部框线,再加粗外框线.字体改成微软雅黑,加粗,居中.第6行A列写上SCORE,C列写上MOVES,都加粗. 一般2048这样的游戏需要用状态机来实现,就是程序无限运行直到游戏结束.在Excel中这种方法不太合适,使用工作表自带的Workshee