小白vba之批量数据整理(excel自动化入门)
excel数据整理
我们在日常工作中经常会碰到excel自带公式无法解决的问题,在面对大量数据需要整理计算的时候会消耗大量的时间,如果你了解vba的一些技巧,就可以减少很多工作量。本篇文章将会带你进入一个简单、易懂的自动化世界。
我们在日常工作中经常会碰到excel自带公式无法解决的问题,在面对大量数据需要整理计算的时候会消耗大量的时间,如果你了解vba的一些技巧,就可以减少很多工作量。本篇文章将会带你进入一个简单、易懂的自动化世界。
如果在工作中,你遇到了几列数据需要转置,如这样的数据:
需要转换成下图:
常规的方法可以进行选择12个月的数据进行选择性粘贴,如果数据量大的话,这可是一个十分耗费时间的过程。有了vba,我们就可以事半功倍的解决这一系列问题。
在excel界面中安alt+f11即可打开vba编程界面,然后在左侧的目录框中右键点击创建模块,即可出现一下界面。
在里面插入以下代码即可完成上述工作。
Sub excel数据整理()
For i = 0 To 11
Range(Cells(2 + 12 * i, 3), Cells(13 + 12 * i, 3)).Select
Selection.Copy
Cells(i + 2, 4).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Next i
End Sub
定义过程
sub+过程名称+()为vba过程的开始,end sub为过程的结束。每个过程在编写之前都需要先把开始和结束语句写完。
for循环设定
for和next构成了循环语句,简单来说就是这个粘贴的过程需要进行多少次,i = 0 to 11就定义了该过程需要进行12次。
利用range和cells进行范围选择
range为范围函数,里面的cells为单元格定位函数。range可以用两个cells函数来定义范围,开始为起始单元格,第二个为终止单元格。而cells函数则需要行号和列号两个参数来定义单元格位置。两个函数加在一起就可以定义一个范围,上述定义的范围为第3列的2行到13行这一个矩形区域。后面跟的12*i为循环变量。在i=0的时候定义范围为第3列的2行到13行,在等于1的时候定义范围变为第3列的14行到25行依次类推,直到i=12时停止。
excel自带函数进行转置粘贴
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True为excel自带的选择性粘贴函数,我们需要转置,所以把Transpose:参数改为True。
总结
整体的过程可以概括为先利用range函数选中特定位置Range(Cells(2 + 12 * i, 3), Cells(13 + 12 * i, 3)).Select,再利用 Selection.Copy进行复制,然后通过Cells(i + 2, 4).Select选择要粘贴的位置,最后利用 Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _False, Transpose:=True进行转置操作。
如果想进行改动以适应更广泛的情况,可以进行如下更改。
1.i值随动,改变后可进行循环次数的改变
2.单元格中12可以改动,改动后可以选择更广阔的范围
3.Cells(i + 2, 4).Select可以改动,改动后可以改变结果的位置
笔者也是vba的初学者,编程大佬可以略过这篇文章啦,希望对从没有这方面经验的小白有所帮助。