我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的劳动效率,而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册,现在已经全部完成,希望大家利用、学习。
如果您只是一般的职场VBA需求,可以打包选择7.1.3.9教程+汉英手册,第7套教程是入门,第1套教程是入门后的提高,第3套教程字典是必备的VBA之精华,第9套教程是实用的典型案例讲解。这四套教程内容掌握后足以处理一般工作中的问题,实际写代码的时候再辅助代码汉英手册,足矣!如果您想进一步提高,就需要选择高级阶段的教程了。
VBA是面向对象编程的语言,博大精深。很多朋友咨询VBA的学习方法,我会陆续给大家讲解一些我的经验,大家可以慢慢体会。今日的内容是如何学习VBA_3.3.7.3 工作表函数和VBA代码中变量求解的方案有什么不同
【分享成果,随喜正能量】232心念善恶,决定了因缘果报。人生的苦乐凶吉,都是因果。能决定自己命运好坏的,也只有自己。有个词叫“感召”,心念变了,就会吸引来不同的果报,因果也就变了。
3.3.7.3 下面我们结合实际看看为了达到我们的目的,工作表函数和VBA代码中变量求解的方案有什么不同。实例:如下的工作表,求数据1和数据2相乘后的和。
方案一:利用工作表函数在工作表中实现:这时在D7单元格中录入公式:=SUMPRODUCT(A2:A6,B2:B6) 即可实现:
方案二:在VBA中利用工作表函数实现,函数要用WorksheetFunction为开头的,如下:
Sub SumProduct()
Range("d8") = WorksheetFunction.SumProduct(Range("A2:A6"), Range("B2:B6"))
End Sub
运行后的结果,在D8的单元格显示了最后的结果:225,这时要注意表示单元格名称的变化,前面加上了range()。下面为运行的结果:
方案三: 那么还有没有其他的办法呢?有的,用VBA变量求和来实现。我们看代码:
Sub SumProduct2()
i = 2
k = 0
Do While Cells(i, 1) <> ""
k = k + Cells(i, 1) * Cells(i, 2)
i = i + 1
Loop
Range("d9") = k
End Sub
代码截图:
最后看运行的结果:
方案四:还有没有其他的办法呢?如果你熟悉了《VBA代码解决方案》你一定会想到了第一册第13讲,如何利用VBA在单元格中录入公式:下面我们看看用这讲的内容来完成我们的要求:
代码:
Sub SumProduct3()
Range("d10").Formula = "=SUMPRODUCT(A2:A6,B2:B6)"
End Sub
代码截图:
看看运行的结果:
上述的四种方案给大家都列出来了,不知读者是认可哪一种方案呢?
其实我们不要拘泥于任何的固定模式,要实际问题实际分析,不要一味地追求运行的效率而忽视了我们的真正目的。在我的经验中,如果能在工作表中解决的在工作表中解决,如果需要复杂的函数,涉及到的参数很复杂的,就要发挥代码变量的作用,来达到目的。
所以大家在学习《VBA代码解决方案》时要理解,以实际的问题为切入点,要综合地考虑问题,千万不要片面。
- 方案比较,xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中: