|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
受willin2000版主委托,在这里详细介绍一下本题中关于单元格引用的一些思路。
单元格引用有A1和R1C1两种形式,两种形式中又包含了绝对引用和相对引用两种不同的变化。
单个区域的引用:
先来讲一下R1C1方式的引用
对于G2:J2这样一个单元格区域,使用R1C1来引用,可以写作:R2C7:R2C10,也可以写作:R2C10:R2C7。但R必须在C前面,“C10R2:C7R2”这样的写法是无效的。
对于这样单行的区域引用,可以使用简写的引用方式,即将R2C7:R2C10中的红色部分省去,简写为R2C7:C10。
如果对于单列的区域引用,例如G2:G10,则可以将R2C7:R10C7中的红色部分省去,简写为R2:R10C7。
为什么可以这样简写,这样的简写有何规律?在没有官方的解释之前,为了便于大家的理解和记忆,我给出一个我自己的解释思路,请看下面的“关于引用运算符”:
关于引用运算符:
Excel中包含了3种引用运算符,用于表示对单元格的引用,
一种是冒号,称为区域运算符,这是最常见的,如=sum(A2:B10),表示引用冒号两边单元格所围成的矩形区域;
一种是逗号,称为联合运算符,如=RANK(A1,(A1:A10,C1:C10)),表示同时引用逗号两边的两个区域;
还有一种是空格,称为交叉运算符,表示引用空格两边的两个区域的交集,如=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引用简写方式的一些理解,但这个题目中真正起到大作用的并非那个简写方式(虽然也可以缩短不少字符),而是引入交叉运算符以后的引用方式。请继续往下看。
交叉运算符同样也可以应用在A1引用方式中:
例如(R2 C7:C10)如果使用A1引用方式,则可以写作:(2:2 G:J)
(R2:R10 C7)如果使用A1引用方式,则可以写作:(G:G 2:10)
从现在的样子看上去,好像A1引用方式更简短,但联系题目的实际情况,经过代入后的比较最终可以发现还是R1C1引用方式更合适,关于这一点可以留到后面再看。
多个区域的引用:
题目最终结果要求同时超级链接到3行最多喜字的区域,这就意味着需要同时对多个区域进行引用,
以同时引用G13:J13、G15:J15、G17:J17这三行区域为例,
使用R1C1的通常写法是:
R13C7:R13C10,R15C7:R15C10,R17C7:R17C10 其中的逗号表示联合运算
可以引入交叉运算符,简化为:
R13 C7:C10,R15 C7:C10,R17 C7:C10
此时,来做一个类似于合并同类项的变形,可以简化为:
(R13,R15,R17) C7:C10
将几个行号用逗号相连接表示联合运算,同时外面用括号包围以后,再与C7:C10区域使用空格进行连接,形成交叉运算关系,得到了我们所需要的三个行区域的同时引用。
这个引用方式就是我的公式中最终所取用的最简短的引用方式。
可以跟A1引用方式做个比较,上述区域的A1引用写法为:(13:13,15:15,17:17) G:J,结合题目的实际情况,可以比较得出A1形式写法的字符代价要远高于R1C1的形式。
至于我两个公式中(R00!,R00!,R00) C7!:C33和(R0R000R00,0) C7!:C33两种不同Text函数自定义格式的区别,主要在于后面这种格式利用了数字格式中的千分位符可以自动生成“逗号”的便利,从本质上来说两者的单元格引用方式是一致的。
写了这么多,也不知道大家能否看懂,如果结合下面这个附件,相信可以更容易理解一些:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?免费注册
x
评分
-
3
查看全部评分
-
|