Excel VBA 8.43代码写入公式 灵活应对各种计算需求(2)

代码写入公式 灵活应对各种计算需求(2)


点击上方“Excel和VBA”,选择“置顶公众号”

致力于原创分享Excel的相关知识,源码,源文件打包提供

一起学习,一起进步~~


昨天我们学习了利用VBA写入公式的方法,这样我们就可以在VBA代码中直接使用公式,将行数公式和VBA代码结合在一起,手握excel的两大利器,在处理Excel方面的问题时,就会更加的得心用手。

而用VBA写入公式,说起来虽然简单,写起来也不算是麻烦,但是理解起来就比较的麻烦

所以针对这个点,我们拆开来分为两节来解说。

上一节我们讲解了这里

rng.Offset(0, rng.Columns.Count).Columns(1).FormulaR1C1 = "=" & fangfa & "(rc[-" & rng.Columns.Count & "]:rc[-1])"

这句代码的前半部分,前半段只要是在VBA中使用公式的方法,也就是我们常说的起手式,在Excel中,很多时候我们写入公式就是直接写一个等于号就行了,但是在VBA中,就没有这么简单了,所以我们上一节单独用了一节的时间

今天我们继续来讲解后半部分,后半段就是公式的组成,而这里的公式又和我们常用的函数公式有一些不同,差异很大,所以我们也独立出来,单独一节来学习,这样大家将两节的内容结合在一起,就可以了,这里不太好理解,大家需要多花费一点时间,如果在学习过程中,有什么很难理解的,可以通过文末的微信加我,我可以尽我所能给大家讲解。

代码解析

今天我们着重来解析下后半部分

"=" & fangfa & "(rc[-" & rng.Columns.Count & "]:rc[-1])"

"=" & fangfa,这一部分应该是非常简单的,fangfa就是我们上面通过inputbox选择的计算

然后我们进入今天的难点

也是最不好理解的地方了

(rc[-" & rng.Columns.Count & "]:rc[-1])"

首先先来解释下,这里的R和C分别代表什么

r=row,就是代表了行的意思,横向移动

c=column,就是代表了列的意思,纵向移动

那么这里的正负号又是什么意思?什么情况下正,什么情况下是负呢?

右就是正方向,相反的,往左就是负方向

知道了这个概念之后,我们就比较好理解这句代码的意思了

rc[-" & rng.Columns.Count & "],其实就是往左移动0行,rng.Columns.Count列,

如下图

其实我们就等于移动到了数据源的第一列,

rc[-1],那这一部分大家照猫画虎的应该能理解了。

往左移动0行,1列,那最终得到的是那一列呢?

这两列蓝色的区域,正好就是我们要计算的整个区域的首尾列,完整的公式是这样的

我们来比较下

=SUM(rc[-3]:rc[-1])=SUM(L2:N2)

这两个公式的结果是一样的,不同的就是一个是我们很容易理解的方式,另外一种就是我们很少用的方式,我们来对照这理解下,这样有助于我们了解在VBA中公式的使用。

其实就是用rc这种移动的方式得到了对应的L2,和N2这两个单元格所在的列。

本案例中,我们要写入公式的是0列,要计算的区域是L列到N列

那么起始列就是L列,那如何从0列移动到L列呢?往左移动3列,行是不变的

那就是rc[-3]

移动到N列就更简单了,只需要往左移动一列即可

就是rc[-1]

最下面一行的计算的,大家对照着这两节的内容,尝试着理解下后面这一句代码的意思吧。

如果能理解,那恭喜你算是掌握和弄懂这个方法了

(0)

相关推荐