VBA 使用.FormulaR1C1 写入公式,公式中需引用不同工作表的区域应该怎么写??

问题1:在代码中使用.FoumulaR1C1语句前,一定要选中某一个单元格,相对于这个单元格进行偏移吗?问题2:例如我在“表1”中写入VLOOKUP公式,而数据源在"表2... 问题1:在代码中使用.FoumulaR1C1语句前,一定要选中某一个单元格,相对于这个单元格进行偏移吗?
问题2:例如我在“表1”中写入VLOOKUP公式,而数据源在"表2",应该怎么写代码呢??
展开
 我来答
一年孤独58aa
推荐于2017-10-03 · TA获得超过1404个赞
知道小有建树答主
回答量:592
采纳率:92%
帮助的人:441万
展开全部

这个和你在工作表中的公式基本一样,工作表中怎么写,VBA中就这么写啊,你只需要将工作表的公式样式设为R1C1,然后将工作表的公式复制进去就可以了。

Sheets(1).Range("B1:B10").FormulaR1C1 = "=VLOOKUP(RC[-1],表2!R1C1:R10C2,2,FALSE)"

 亲,R1C1的引用样式相对于A1的样式好处在于具有相同的公式单元格内公式的字符都是一模一样的,这对于VBA来写公式时是非常方便的的。举个例子,你在B1中输入=A1,拉到B10时,从B2到B10就是=A2, =A3 , … , =A10. 如果用VBA来写的公式而又用A1样式的话,岂不是要对每个单元格不同处理,会很麻烦,换做R1C1样式的话,B1:B10中的公式都是=RC[-1], 一次就可以处理了:

Sheets(1).Range("B1:B10").FormulaR1C1 = "=RC[-1]"

[-1]代表相对与公式所在位置向左偏移1列,而公式的位置即为Sheets(1).Range("B1:B10"),你写公式的时候就指明了,所以无需”在代码中使用.FoumulaR1C1语句前,一定要选中某一个单元格“。

请仔细理解R1C1样式!

追问
原来是这样!我一直都选中单元格再偏移…… 原来是相对被写入公式的单元格~!还可以对区域写入工时0.0 长见识了!

对于跨表的方式我还是不太理解……如果是相对被写入公式的单元格,那么我写入“表2”的单元格时也要相对“表1”中被写入的单元格而偏移吗?? 比如你的代码中是在Sheets(1)中写入,那么公式中的“表2!R1C1:R10C2”是相对谁偏移的呢???
追答
跨表和不跨表的方式都是一模一样的, 相对引用都是相对与被写入的公式的单元格的偏移量.
“表2!R1C1:R10C2”就是绝对引用了, 相当于"表2!$A$1:$B$10", 绝对引用时不存在相对谁偏移的问题,因为引用的地址是不变的.

对于R1C1引用样式: R后的数字表示行标,C后的数字表示列标;数字后面没加括号就是绝对引用.
如R1C1就表示第1行第1列,相当于A1;
数字加了方括号表示相对与公式所在单元格的偏移值, 如公式在B2, 公式为=R[-1]C[1]就表示C1单元格.
如果偏移量为0,就可以省略不写,如R[0]C[1]就相当于RC[1], 如果B2的公式为=RC[-1], 就等价于=A2.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式