Excel VBA 8.42单元格批量写入公式 无需二次填充公式

单元格批量写入公式 无需二次填充公式


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

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

一起学习,一起进步~~


写入公式之后,还需要执行填充操作,那么能否用VBA优化下呢?其实我们之前已经用VBA写入了公式,完全可以一次性将多个单元格写入公式,根本不需要二次填充了。

场景说明

这是我们今天模拟的的数据源,从这份数据源中,我们可以看到,数据的结果非常的简单

VBA就可以一次解决,只需要按需要作出选择,就可以轻松计算了

代码区

做出一次选择之后,就可以轻松实现各种不同的运算?

那是不是要写很长的代码?

不用,看看题目,今天的重点是,代码+公式

Sub sij()Dim rng As Range, xz&Set rng = Application.InputBox("请选择单元格", "请选择", , , , , , 8)xz = Application.InputBox("请选择计算方法" & Chr(13) & "1.求和" & Chr(13) & "2.最大值" & Chr(13) & "3.最小值", "请选择", , , , , , 3)fangfa = Choose(xz, "SUM", "MAX", "MIN")rng.Offset(0, rng.Columns.Count).Columns(1).FormulaR1C1 = "=" & fangfa & "(rc[-" & rng.Columns.Count & "]:rc[-1])"rng.Offset(rng.Rows.Count, 0).Rows(1).FormulaR1C1 = "=" & fangfa & "(r[-" & rng.Rows.Count & "]c:r[-1]c)"End Sub

代码也不长,重点还是要理解代码的写法,先来看看代码执行的效果

代码解析

今天的这个一句代码比较复杂,并不好理解

我们还是拆分开来讲解下

xz = Application.InputBox("请选择计算方法" & Chr(13) & "1.求和" & Chr(13) & "2.最大值" & Chr(13) & "3.最小值", "请选择", , , , , , 3)

不知道大家还记不记得我们之前讲过的InputBox的用法,如果不记得的话,可以回去翻看下第一章节的知识。

没有了那么奇怪的符号之后,我们看到这个输入框就变成这样的结果,虽然也能够看懂,但是文字都堆在一起,明显展示效果不好,所以我们才需要这些符号,这些符号干什么用的呢?其实就是VBA中专门用来换行的,

& Chr(13) &,就是他,粗暴一点理解为换行符就行,主要用在文本的处理中。

fangfa = Choose(xz, "SUM", "MAX", "MIN")

来到今天的重点,VBA如何写入公式呢?

这里我们将代码拆分成两部分,等号前一部分,等号后面为一部分

先来看看等号前面

rng.Offset(0, rng.Columns.Count).Columns(1).FormulaR1C1

rng.Offset(0, rng.Columns.Count)表示的就是单元格的一定,移动多少呢?0行,rng.Columns.Count列

那么我们VBA要写入公式的单元格区域是不是就是这个紫色的区域呢?那么既然得到连这个结果,那就是可以在代码中表示了。

.FormulaR1C1,他代表的就是公式的意思,意思就是我们要往这个区域中写入的是公式。

那么等号后面的部分呢?又要如何理解呢?

先不方,吃透这一节的知识,等号后面的,我们放在下一节继续说。

源文件下节一起提供

好了,明晚21:00,准时再见!

因为公众号没有留言功能(开的比较晚),所以建立一个线下微信群,主要为大家提供一个交流的平台,同时大家也可以提一些对公众号的意见和看法,大家一起学习,一起进步。

个人的小群,也不会很热闹,有问题抛下问题,大家互相帮助,不要发广告哦~

因为近期加群人员太杂,需要入群的小伙伴可以先加我微信,备注“加群”我会拉进群,不备注,不加的哦~~

(0)

相关推荐