场景:周一早上,小毕正对着电脑发愁,艾迷糊顶着黑眼圈冲进办公室

小毕:迷糊,你怎么累成这样?
艾迷糊:(瘫在椅子上)周末帮女朋友做表格,用威叔教的A1样式……结果她表格有500行!我写公式写到凌晨三点!
老威:(端着新泡的龙井茶出现)嗯?A1样式的确 直观,但对付规律性操作,就像用勺子挖运河——工具没错,但效率不高啊。
小毕:威叔!还有更高效的方法?
老威:今天给你们介绍A1样式的”表哥”——R1C1样式。(在白板上画起来)
艾迷糊:R1C1?听起来像机器人名字!
老威:这么说吧,如果A1样式是通俗唱法,那R1C1就是美声唱法——更专业,更适合批量操作。
来看对比:(敲代码)
' A1样式 - "通俗唱法"
Range("D2") = "=B2+C2"
Range("D3") = "=B3+C3"
Range("D4") = "=B4+C4"
' R1C1样式 - "美声唱法"
Range("D2:D4").FormulaR1C1 = "=RC[-2]+RC[-1]"
小毕:哇!三行变一行!但是这个RC[-2]是什么暗号?
老威:(推了推眼镜)想象一下寻宝游戏:
– R = Row(行),C = Column(列)
– RC[-2] 意思是:”从我目前的位置,向左走2列”
– RC[1] 意思是:”从我目前的位置,向右走1列”
艾迷糊:(挠头)这不就跟玩跳格子一样吗?前进后退的?
老威:没错!来实战一下:(打开工资表)
Sub R1C1实战()
' 给D列统一添加公式:基本工资+奖金
Range("D2:D100").FormulaR1C1 = "=RC[-2]+RC[-1]"
' 在E列添加判断:如果总额>5000显示"优秀"
Range("E2:E100").FormulaR1C1 = "=IF(RC[-1]>5000,""优秀"",""普通"")"
End Sub
小毕:(震惊)我的天!我平时要下拉填充一百行的公式,这一句代码就搞定了?
艾迷糊:(突然跳起来)我懂了!这就像玩”贪吃蛇”——往前吃,往后吃,全看指令!
老威:(哭笑不得)虽然比喻很迷糊……但意思对了。再来看个高级用法:
Sub 智能填充()
' 不管数据有多少行,自动检测并填充
Dim lastRow As Long
lastRow = Cells(Rows.Count, 2).End(xlUp).Row
Range("D2:D" & lastRow).FormulaR1C1 = "=RC[-2]*RC[-1]"
End Sub
小毕:这个太强了!再也不用担心数据增减了!
艾迷糊:(幻想状)那我是不是可以写个万能公式,后来所有表格都能一键搞定……
经理:(突然出现)艾迷糊!上季度销售报表的提成计算好了吗?各部门催着呢!
艾迷糊:(慌慌张张)经理,那个……有五百多行数据……
老威:(微笑接过话)用R1C1样式,30秒就够了。(快速敲代码)
Sub 计算提成()
Columns("E:E").Insert '插入提成列
Range("E1:E1000").FormulaR1C1 = "=RC[-2]*RC[-1]*0.1" '销量*单价*10%提成
End Sub
经理:(看呆)这……这就完了?我平时要算一小时的!
艾迷糊:(得意)经理,这就是科技的力量!

老威:(语重心长)记住,R1C1的精髓在于相对位置思维。就像告知你:”从你目前站的位置,往北走三步,往东走两步挖宝藏”——
小毕:我清楚了!不管我在哪个单元格执行,它都知道相对位置!
老威:没错。最后送你们个”寻宝口诀”:
– RC 就是”我在这里”
– R[1]C[1] 就是”往下1行,往右1列”
– RC[-1] 就是”往左1列”
– R5C3 就是绝对位置”第5行第3列”
艾迷糊:(模仿武功招式)北冥神功!吸星大法!我吸我吸……
经理:(眼睛发亮)老威,你这个方法能不能给全公司培训一下?太高效了!
老威:(喝口茶)培训可以,不过……(看了眼艾迷糊)有些人可能要先从”幼儿园级别”的相对位置概念学起。
小毕:威叔,我越来越觉得VBA像一门武功了——A1样式是外家功夫,直观刚猛;R1C1是内家心法,灵活高效!
老威:(欣慰点头)有悟性!内外兼修,方能成为真正的Excel高手。
知识点总结:
1. R1C1核心:使用相对位置引用,R代表行,C代表列
2. 相对引用:RC[-1](向左1列),R[1]C(向下1行)
3. 绝对引用:R1C1(第1行第1列)
4. 优势:批量填充公式时极其高效,自动适应数据范围
5. 应用场景:规律性计算、动态范围填充、模板制作
如果觉得有用,别忘了 点赞 + 收藏,关注我,获取更多Excel VBA高效编程技巧!
(图片由AI生成)


















暂无评论内容