![Excel中R1C1样式引用详解_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-2/12/74ded7d6-5e08-4e4a-bf07-bc351fa0b17e/74ded7d6-5e08-4e4a-bf07-bc351fa0b17e1.gif)
![Excel中R1C1样式引用详解_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-2/12/74ded7d6-5e08-4e4a-bf07-bc351fa0b17e/74ded7d6-5e08-4e4a-bf07-bc351fa0b17e2.gif)
![Excel中R1C1样式引用详解_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-2/12/74ded7d6-5e08-4e4a-bf07-bc351fa0b17e/74ded7d6-5e08-4e4a-bf07-bc351fa0b17e3.gif)
![Excel中R1C1样式引用详解_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-2/12/74ded7d6-5e08-4e4a-bf07-bc351fa0b17e/74ded7d6-5e08-4e4a-bf07-bc351fa0b17e4.gif)
![Excel中R1C1样式引用详解_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-2/12/74ded7d6-5e08-4e4a-bf07-bc351fa0b17e/74ded7d6-5e08-4e4a-bf07-bc351fa0b17e5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Excel中R1C1样式引用详解这篇文章根据excelhome论坛中的两个帖子进行整理,稍作了修改。以下内容来自第一个帖子,点击这里可以查看原文。一、引用单元格:R1C1样式与A1样式比较DanBricklin和BobFrankston使用A1表示电子表格左上角的单元格, MitchKapor在Lotus 1-2-3中也是使用这种编址方案。Microsoft试图改变这种趋势,采用了名为 R1C1样式编址方案。单元格 A1称为R1C1,因为它位于第一行,第一列(Row 1, Column 1)。在20世纪80年代和90年代初期,A1样式称为了标准,Microsoft公司认识 到了危机,最终让ex
2、cel接受了 A1样式,并同时支持R1C1样式编址方案。当 刖,excel默认使用A1样式。为什么学习R1C1样式?答案是:1, excel的宏录制器采用的是R1C1样式录制公式。2, R1C1样式比之A1样式有更高的效率,尤其是对于公式,编写的代码效率 会更图03,在BVA编辑器中,创建数组公式或基于公式设置条件格式时,采用的是 R1C1样式输入公式。怎么切换R1C1样式?单击O巾ce按钮选择Excel选项,在公式类别中选择复选框 "R1CGI用样式版面上唯一不同是列标 A,B,C-变成数字1,2,3,单元格C5变为R5C2二、EXCEL公式的神奇之处如动画所示,Excel能智能的
3、填充公式,并向下复制,第一次看到一定感觉非 常惊奇。实际这并不惊奇,因为,Excel内部使用的是R1C1样式的公式,以A1样式显示地址和公式。如果将动画所示的工作表切换成 R1C1样式表示法,将发现C2:C7的公式都是形同的。三、在VBA中采用A1样式与R1C1样式之比较如上述动画实例,如用 A1样式编写代码,代码可以类似下面这样:Sub chengji()Dim Finalrow As IntegerFinalrow = Cells(Rows.Count, 2).End(xlUp).Row'求第二列数据行数Range("c2").Formula = "=
4、a2*b2"Range("C2").Copy Destination:=Range("C2:C"&Finalrow) End Sub上述代码在第二行输入公式,再向下复制公式如果用R1C1样式只需一条语句就可整列输入公式Sub chengji()Dim Finalrow As IntegerFinalrow = Cells(Rows.Count, 2).End(xlUp).Row'求第二列数据行数Range("c2:c" &Finalrow).FormulaR1C1 ="=RC-1*RC-2&
5、quot; End Sub使用R1C1样式的优点是,所有C列的公式都是相同的,不需要改变四、怎么引用R1C1样式R1C1样式采用R来表示行,C来表示列4.1 样式的相对引用对于列正数表示向右移指定数量的列,负数反之。对于行正数表示向下移指定数量的行,负数反之。如果省略掉R或C后面的方括号,表示和引用单元格在同行或同列。4.2 样式的绝对引用在A1样式中使用绝对引用要在行号或列号字母 前使用$。但在R1C1样式中 只需省略方括号就行了,是不是很简单!!!如下所示代码:Sub huizong()Dim Finalrow As IntegerFinalrow = Cells(Rows.Count,
6、2).End(xlUp).RowCells(Finalrow + 1, 1).Value ="汇总"Cells(Finalrow + 2, 1).Resize(1,3).FormulaR1C1 =”=SUM(R2C:R-2C)” End Sub引用R2C:R-2C表示将当前列第2行到上2行中,同列数据的和,通过使用R1C1混合引用,可以使用公式求行数不确定的数据,4.3 引用整行和整列有时候需要编写整列的公式。例如求G列的最大值,如不知道G列包含多少行,可在单元格中输入公式=MAX ($G:$G),要找出第一行中最大的值可用 =MAX($1:$1)或 R1C1 公式=MAX
7、(R1)。可以整行、整列使用相对引用。要计算当前单元格上一行的平均值,可用=AVERAGE(R-1)如何在D5引用其周围的单元格?I RCpRC-1RC1RC2R1CR2C泳图演示了怎么在D5中引用其周围的单元格五、R1C1样式的经典实例,一种有趣的行为创建R1C1公式实际上比A1公式更直观。一个演示 R1C1公式的经典实例是创建乘法表。在excel中,使用单个混合引用公式就可创建乘法表。5.1创建乘法表在B1: M1中输入数字1-12,在A2:a13中也输入数字1-12 ,现在创建b2:m13中所有单元格公式,它计算第一行和第一列的乘积。用R1C1样式公式代码如下:Sub Multiplic
8、ationtable8()Range("b1:m1").Value= Array(1, 2, 3, 4, 5, 6, 7, 8,9, 10, 11, 12)Range("b1:m1").Font.Bold =TrueRange("b1:m1").CopyRange("a2:a13").PasteSpecial TransposesTrueRange("b2:m13").FormulaR1C1 = "=rc1*r1c"Cells.EntireColumn.AutoFit'
9、;最合适的列宽End Sub5.2 一种有趣的行为尝试以下操作,将单元格指针移到F6,单击 开发工具“-"录制宏;'然后单击 开发工具”一使用相对引用“,输入公式=a1并按ctrl+enter键,以保留在F6键 中。单击停止录制”按钮。将得到一个只包含一行的代码的宏,它在当前的单元格输入公式,该公式引用向上5行,向左5列的单元格:Sub 宏 1()Selection.FormulaR1C1 = "=R-5C-5”End Sub现在将单元格指针移到A1并运行刚才的宏,你可能会认为将导致运行错误1004,但实际并没有出现这种错误。运行宏时,单元格 A1中的公式指向=XF
10、1048572 ( Excel2003指向=IR65532),这意味着R1C1公式从表的左侧绕回到右侧。这是一个很有趣的行为,但是可能宏将提供一个与用户期望不同的结果! ! ! ! ! !乘法表实例:扉 融:辨号嫄 尸虹 t跋E2& =|AE|1Habcdefghijklm N 0 P Q IIM M HIIIM M M !1 1- Mil * Illi * Illi ! M II M 1M M HIIIM 1 I Illi 1 j 1 2 3; 4; 5 6l 7 8 9 10 it 12| I I f: 二 二: 二: 二 二 二 11 二 Tsvea&*' V W
11、B'4V' V *,*" W&.y -fevCwB'#WW-ll-r tbs-bb !«««»> a-b-rbvb!««->»«»= a-ei2 H 1 1 3; 4; sj 6i 7 8 gj 10 111 12; j j j"* !!<!, a if i. mi«4.aiiMii. sa«aiiaiiAa.aii«ii. saa *4 工* xauii. nii =a aq aiiii *-a u, a
12、,hiijiii n aqxau«a. hiiab k iuji aii«a. muaita !_ ':! an,* a 上!,an,廿 a tkaq aa.iiiidiiiia u=q aaa. muanu iLq j34567891011121314151617L819101 1 i 6; 8; 1012 14 16 18! 20 22 24; ffMIffimHIIRWTf+-i.-小一k.产3| 3; 6| 9“2|15网 21 阚 30 33 361专郊通 碗喇M 钿d 4: 8:12|16|20|24:28 32; 36| 40; 4d4,醒®
13、 & $ 启盯 » jj51 510 15;加乃1初打 4C| 45! 50 551 60i6|»|18|24|30|364248|54!6066| 721717; Mi 21| 2835; 424956|研70:77j 84:d8:16:24"2;40;48:5664:72:8088诙:, * i 4»« 事*& "4""" ""k199 427围45就 6372;81|904血4*T>S*.* 士* 工 L JS * *=9 &4 L !*<上占
14、!* *1 * *W4*I&4L*4* L 4 *-U * * 4 *lol 10 20;3ol40)50|60|70 80; 90! 100; 110 闻ji-ji-es-i,-ieii-i-i- 11|11|22|33|44)55|66|77 88; 99|110=121)1321 121 12 24:加加 60山& %; 108! 120 1321144! 3 -二一; ,丁 二i .1:3 I国二可患.1户bam演 NMj嚣山I)-8 nUr«ject (mCtES lUkl)I 月后”出衣虱可寥哥 jijbSanl_tMleB nifraject (r
15、71;41att jp)4|旧。阱底Eicil糖却施式1届观电 Thi引arib«ik争设flifujiM箧车单制作,口“) 司母TUkojHt Ct作勘,口”)* FlLcr”*ft;携雪 She 乳 1 fcilteeJ j就靠然立出(| Sh*et3IK IbidlartibHk3淖住眦IBHII-j.4=-4- -<> -I4-5»六、条件格式中的 R1C1样式应用设置条件格式时,必须使用R1C1公式,这很重要。文档没有明确之处这一点,但如果不用R1C1公式,有时可能出问题,有研究发现,如果用A1公式,每对50 个单元格设置条件格式,将有一个单元格出现奇
16、怪的行为。因为将 A1引用转换为R1C1引用有时存在二义性,例如,R2表示一个单元格,但可能被错误理解 为整个第二行。FormatCond让ions对象用于设置条件格式。每个单元格可以有3个Formatconditions,下面的代码首先遍历所有工作表,删除每个工作表中的条件格式,然后遍历每个工作表中所有的非空单元格,并应用两种条件格式。在第一种条件格式中,类型为 xlExpression,这意味着使用的是 公式"语法首先Foumulal指定的公式采用的是 R1C1表示法。第二个条件格式使用xlCellValue类型,这需要指定一个运算符和一个值。在添加条件后,为条件1和条件2设置字
17、体的ColorindexSub ApplySpecialFormattingALL()For Each ws In ThisWorkbook.Worksheets ws.UsedRange.FormatConditions.Delete For Each cell In ws.UsedRange.CellsIf Not IsEmpty(cell) Then'单元格值是任意错误值时,'把字体颜色设置为与单元格底色相同的颜色(即看不出错误值)cell.FormatConditions.AddType:=xlExpression, Formula1:="=or(ISERR(
18、RC),isna(RC)” cell.FormatConditions(1).Font.Color =cell.Interior.Color'单元格值小于0的,全部用红色字体标出cell.FormatConditions.AddType:=xlCellValue, Operator:=xlLess, Formula1:="0" cell.FormatConditions(2).Font.ColorIndex =3End IfNext cellNext wsEnd Sub一个演示条件格式的经典实例,显示包含最小值和最大值的行。代码如下:Sub FindMinMax()
19、Finalrow = Cells(Cells.Rows.Count,1).End(xlUp).RowWith Range("a2:c" &Finalrow).FormatConditions.Delete.FormatConditions.Add Type:=xlExpression,Formula1:="=rc3=max(c3)”.FormatConditions(1).Interior.ColorIndex = 4用绿色底纹标出.FormatConditions.Add Type:=xlExpression,Formula1:="=rc3=m
20、in(c3)”.FormatConditions(2).Interior.ColorIndex = 6用黄色底纹标出End WithEnd Sub如果设置一个指向单元格 C3的条件格式,这种格式将失败,因为Excel将C3解释为第3列。七、VBA中的R1C1样式数组公式数组公式必须是R1C1公式。数组公式是功能强大的 超级公式",被称为CSE公式,因为用户必须按Ctrl+Shift+Enter键来输入它们,如:=SUM(A$2:A7*B$2:B7)这是个数组公式,很好理解。虽然在用户界面中显示 A1样式,但输入数组公式要使用 R1C1表示法:Sub EnterArrayFormula
21、s()Finalrow = Cells(Rows.Count, 1).End(xlUp).RowCells(Finalrow + 2, 2).Value ="乘积和"Cells(Finalrow + 2, 3).FormulaArray ="=sum(R2C-2:R-2C-2*R2C-1:R-2C-1)H End Sub上述代码中的:Cells(Finalrow + 2, 3).FormulaArray ="二sum(R2c-2:R-2C-2*R2c-1:R-2C-1)”可以简化为:Cells(Finalrow + 2, 3).FormulaArray
22、="=sum(R2:R-2C-2*R2:R-2C-1)"后面有介绍,但要注意:红色和蓝色代码之间有一个空格。【小技巧】可以采用下面的方法快速输入R1C1公式:在任何单元格中输入常规的A1公式或数组公式,选择该单元格并切换到VBA编辑器。然后按Ctrl+G键打开立即窗口,再输入:?Activecell.FormulaR1C1 或者Print Activecell.FormulaR1C1并接回车键,Excel将把公式栏中的公式转换为 R1C1样式。以下内容来自第二个帖子,点击这里可以查看原文。单元格引用有A1和R1C1两种形式,两种形式中又包含了绝对引用和相对引用两种不同的变化
23、。单个区域的引用:先来讲一下R1C1方式的引用对于G2:J2这样一个单元格区域,使用R1C1来引用,可以写作:R2c7:R2c10, 也可以写作:R2c10:R2c7。1 R必须在C前面,“ C10R2:C7R也样的写法是 无效的。对于这样单行的区域引用,可以使用简写的引用方式,即将R2c7:R2c10中的红色部分省去,简写为 R2C7:C10O如果对于单列的区域引用,例如 G2:G10,则可以将R2c7:R10C7中的红色部分省去,简写为R2:R10C7O为什么可以这样简写,这样的简写有何规律?在没有官方的解释之前,为了便于大家的理解和记忆,我给出一个我自己的解释思路,请看下面的关于引用运算
24、符”:关于引用运算符:Excel中包含了 3种引用运算符,用于表示对单元格的引用,一种是冒号,称为区域运算符,这是最常见的,如 =sum(A2:B10),表示引用冒号两边单元格所围成的矩形区域;一种是逗号,称为联合运算符,in=RANK(A1,(A1:A10,C1:C10),表示同时引用逗号两边的两个区域;还有一种是空格,称为 交叉运算符,表示引用空格两边的两个区域的交集, iO=SUM(A1:B5 A4:D9)即等价于=SUM(A4:B5)。这个交叉运算符也是我这里要重 点引入的一个使用技巧。对于G2:J2这个单元格区域,如果换一个角度来看,可以看作是G:J这4列与 第2行所构成的交叉区域。因此,如果用交叉运算符和R1C1样式来引用的话,可以写作:R2 C7:C10,即表示R2与C7:C10这两个区域的交叉区域。因此R2c7:R2c10等价于(R2 C7:C10),而这个形式与上面的简写形式R2c7:C10十分相似;同理,G2:G10可以表示为R2c7:R10C7,等彳于(R2:R10 C7),这个形式于其 简写形式R2:R10C7也十分相似。以上就是对于同行或同列的 R1C1引用简写方式的一些理解,但这个题目中真 正起到大作用的并非那个简写方式(虽然也可以缩短不少字符),而是引入交叉
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设计思维在医疗技术创新中的应用
- 智能科技在家校互动中的应用与前景展望
- DB4415T 50-2025黑芝麻种植技术规程
- 个人贷款合同协议书范本
- 亲属间房产赠与合同
- 二手建筑设备买卖合同样本
- 乒乓球馆租赁合同书范本
- 不可撤销劳动合同案例析:劳动者权益保障
- 专业工作室服务合作合同样本
- 中小企业联合经营合同协议
- 保卫管理员培训课件
- 香港朗文4B单词及句子
- 数据中心运维方案
- 小龙虾啤酒音乐节活动策划方案课件
- 运动技能学习与控制课件第五章运动中的中枢控制
- 财务部规范化管理 流程图
- 苏教版2023年小学四年级数学下册教学计划+教学进度表
- 断绝关系协议书范文参考(5篇)
- 量子力学课件1-2章-波函数-定态薛定谔方程
- 最新变态心理学课件
- 【自考练习题】石家庄学院概率论与数理统计真题汇总(附答案解析)
评论
0/150
提交评论