一、自定义函数。
如计算Unif,使用excel原来的公式,则Unif=(Max(range)-Min(range))/(Max(range)+Min(range)),非常麻烦。
自定义一个函数unif,则Unif=unif(range)就可以了。
二、自定义工具栏。
其实我是写一个vba程序,然后添加到工具栏,不是复杂的那种。但非常方便的。
比如使用透视表时,添加的数值中的项要么为计数项,要么为求和项的,但我平时是看平均值的,当然可以自己改,但是有时候看的项目比较多,一个个改太麻烦了。
于是,我写了程序,针对当前Activesheet中的透视表,自动将数值变为平均值。然后把这个宏添加到“设计”中,每次编辑透视表就可以点一下自动变更啦。
三、用户窗体。
这个也编了一个,按个按键,d出来一个窗体,就和软件一样,然后可以各种 *** 作。有点复杂。
四、数据汇总用的。
就是自动将多个excel合并,汇总数据什么的。一般就是建个xlam模板,然后应用。很复杂。
个人遇到的基本就是这些情况。
zhouziyan2001 ,离线解释:Dim i As Long, j
'定义变量
For i = 1 To Sheet8.Range("a65536").End(xlUp).Row
'运算从Sheet8的第一行到第一列的最后一个有内容的单元格所在列.
'对后面内容,你可以查找END()的帮助来理解
Sheet3.Cells(i, 1).Formula = "=MATCH(Sheet8!A" &i &",Sheet1!A:A,0)"
'本句为了节省代码,直接借用了EXCEL的公式来查找符合条件的单元格所在的行
'函数MATCH就是查找函数.
'否则,要自己编写查找循环代码,由于VBA是解释执行,会导致效率很低,
'Formula就是把后面的公式写到该单元格中并运算.
j = Sheet3.Cells(i, 1): Sheet3.Cells(i, 1) = ""
'找到后将值(也就是查找到的行)传递给变量j,
If IsNumeric(j) Then
Sheet1.Cells.Rows(j).Cut
Sheet3.Rows(i).Insert
Sheet1.Cells.Rows(j).Delete
End If
'IF语句用来将该行复制,粘贴在SHEET3的相关行中,结束后将该行删除.
'如果在同一工作表中,该三行语句可简化为: Cells.Rows(j).Cut Rows(i)
Next i
'运行下一行
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)