问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

excel中的单元格引用有哪几种方式?

发布网友 发布时间:2022-04-22 22:59

我来回答

1个回答

热心网友 时间:2023-01-25 11:16

用Range可以将文本型的单元格地址转化为单元格对象引用,类似于工作表函数“INDIRECT”。它可以引用单元格、区域、整行、整列及整个工作表。

1、引用单元格

Range引用单元格的对象的方式为:单元格的列标加行号作为参数,且左右加入引号。例如:

Range(“A1”) ——表示A1单元格

Range(“C25”) ——表示C25单元格

Range(“ZZ1048576”) ——表示ZZ1048576单元格,在Excel2003中是无效的引用,因为Excel2003的最大行不超过65536行,最大列不超过IV列

Range(“A1”)本身是代表一个单元格对象,但在“MsgBox Range(“A1”)”语句中则可以获取单元格的值。事实上“MsgBox Range(“A1”)”是“MsgBox Range(“A1”).Value”的简写。

每个对象都有很多属性,同时也都有一个默认属性,而单元格的默认属性是“Value”,所以如果不明确指出属性时,那么一定是调用它的Value属性值。

Range参数中的引号必须是在半角状态下输入,否则必将产生编译错误。另一个重点是VBA中Range(“A1”)方式引用对象时是不区分相对引用和绝对引用的,不管使用Range(“A1”)、Range(“$A1”)、Range(“A$1”)还是Range(“$A$1”)都引用同一单元格,而且在循环中也不产生任何影响。所以为了简化,通常只用Range(“A1”)这种形式来引用单元格。

2、引用区域

Rang引用区域时是利用区域左上角单元格地址加冒号再加右下角单元格地址为其参数。不过参数也可以写成右下单元格地址加冒号再加左上角单元格地址,VBA会自动将其转换成左上角单元格地址加冒号再加右下角单元格地址的形式。

例如以下两种方式引用区域都可以得到相同结果:

MsgBox Range(“A2:D1”).Address

MsgBox Range(“D1: A2”).Address

以下是一些合法的区域引用:

Range(“A1:V10”) ——代表从A1到V10的矩形区域,包括220个单元格

Range(“F1:F10000”) ——代表从F1到F10000的矩形区域,包括9999个单元格

Range(“D2:ZZ10000”) ——代表从D2到ZZ10000的矩形区域,包括6989301个单元格,在Excel2003是不合法的引用方式,因为它的最大列只有IV

区域的默认属性也是Value,但是区域的Value是一个数组,包括多个对象,VBA中无法直接将其显示在屏幕上。如果利用MsgBox来显示这个属性值将得到一个运行错误。

正确的方式是逐个引用区域中单个值。通过索引号作参数来实现。例如:

Range(“D2:Z10”)(1) ——代表D2:Z10区域中第一个单元格的Value,即D2

Range(“D2:Z10”)(3) ——代表D2:Z10区域中第三个单元格的Value,即F2

Range(“D2:Z10”)(24) ——代表D2:Z10区域中第24个单元格的Value,即D3

也就是说,索引号代表区域中从左到右、从上到下的序号,它是区域左上角单元格的参照进行相对引用。

如果索引号为小数时,VBA会自动进行四舍五入。例如:

MsgBOX Range(“D3:E7”)(1.5).Address ——结果为“$E$3”,参数1.5当作2处理

MsgBOX Range(“D3:E7”)(4.4).Address ——结果为“$E$4”,参数4.4当作4处理

事实上,索引号可以使用两个参数,第一参数表示行的索引,第二参数表示列的索引。那么参数“(4,5)”就可以引用区域中第四行第五列的单元格,它以区域左上角单元格为参照,而非以工作表中A1单元格为参照。

例如以下的引用:

MsgBOX Range(“D3:F7”)(1,3).Address ——结果为“$F$3”,表示D3:F7区域第一行第三列

MsgBOX Range(“D3:F7”)(4,2).Address ——结果为“$E$6”,表示D3:F7区域第四行第二列

区域的参数还可以使用零和负数,甚至大于区域单元格个数以及小于零,同样是合法的引用。当行索引参数为零时,则向区域中左上角单元格向上偏移一个单位;当列参数为零时,则向区域中左上角单元格向左偏移一个单位;如果参数是负数,在继续追加偏移量。例如:

MsgBOX Range(“D3:F7”)(0,0).Address ——结果为“$C$2”,即D3向左及向上偏移一个单位

MsgBOX Range(“D3:F7”)(-1,-2).Address ——结果为“$A$1”,即D3向上偏移两个单位再向左偏移三个单位

MsgBOX Range(“D3:F7”)(9,4).Address ——结果为“$G$11”,即D3向下偏移九个单位再向右偏移四个单位。虽然其行数与列数都已超过区域的大小,仍然可以正确的引用单元格

Range的参数也支持表达式,即字符或者数值运算结果。例如:

Range(“F”&3+2) ——表示引用F5单元格

Range(“F”&Range(“D5”).Value)

Range(“D”&WorksheetFunction.min([a:a])& “:G5”)

还可以使用变量作为参数,这在循环语句中极为有用。例如:

Range(“D”&i) ——表示列标为D,行号为变量i的值的单元格引用

3、引用多区域

如果作参数是使用多个区域地址,且用半角逗号分隔,那么Range也可以引用多个区域。

例如以下引用方式:

Range(“D3,F7”) ——表示D3和F7两个区域,包括2个单元格

Range(“D3:F4,G10”) ——表示D3:F4和G10两个区域,包括7个单元格

Range(“A1,B3:F4,Z1:ZB2”) ——表示A1、B3:F4和Z1:ZB2三个区域,包括1317个单元格

此方式引用单元格有一个*,参数的长度不能超过256个字符,否则将会产生运行时错误。

4、引用整行、整列

利用“行号:行号”作为参数时产生对整行的引用,同理利用“列标:列标”作为参数时可产生对整列的引用,如果两个行号或者列标不一致时,可以引用多行或者多列。

以下是一些合法的引用:

Range(“2:2”) ——表示引用第二行

Range(“2:10”) ——表示引用第二到第十行

Range(“D:d”) ——表示引用第D列,列标不区分大小写

Range(“D:Z”) ——表示引用从D列开始到Z列结束的区域

Range(“D:A”) ——表示引用从A列到D列,顺序不一致时,VBA会自动转换成升序格式

参数中的冒号可以用半角也可以用全角冒号,VBA会将其全角冒号转成半角冒号。但是引用却只能使用半角,否则将产生编译错误。

整行、整行引用对象除了Range方法外,还可以用Rows和Columns来完成。其中Rows引用行,以阿拉伯数字作为参数;Columns引用列,既可用阿拉伯数字做参数,也可用列标做参数。

Rows(2) ——表示引用第二行

Rows(“2”) ——同样表示引用第二行

Rows(“2:2”) ——仍然表示引用第二行

Rows(“2:4”) ——表示引用第二到第四行

Columns(2) ——表示引用第二列,相当于Range(“B:B”)

Columns(“B”) ——同样表示引用第二列

Columns(“B:B”) ——仍然表示引用第二列

Columns(“B:D”) ——表示引用B到D列

如果不带参数,那Rows代表整个工作表所有行。而Columns代表整个工作表所有列。

5、Range嵌套使用

除上面的四中方法外,Range还支持利用单元格作为参数,其具体语法为:

Range(Cell1,Cell2)

其中Cell1和Cell2是必选参数。Cell1用于指定目标区域的左上角单元格,Cell2用于指定目标区域右下角单元格。如果使用一个或者三个单元格将产生编译错误。

例如以下引用方式全是合法的区域引用:

Range(Range(“A1”),Range(“D2”) ——表示引用A1:D2区域,包含8个单元格

Range(Range(“A4”),Range(“A100”) ——表示引用A4:A100区域,包含97个单元格

当然也有一些特殊的应用,当参数并非单个单元格,而是区域是,取两个区域所跨越的最大范围。例如:

Range(Range(“A1:A3”),Range(“D2”)) ——表示引用A1:D3区域,而非A1:D2。VBA会从两个区域最左上角的单元格作为新的区域的参照起点,再取两个区域所跨越的最大行作为新的区域的行数,取两个区域跨越的最大列作为新区域的列数。

Range(Range(“B2:A3”),Range(“A3:D10”)) ——表示引用A2:D10区域。

要理解这个算法,可以分别将B2:A3和A3:D10两段字符配对,然后从前两个字符中取最小值,再从后两对字符中取最大值,再加上冒号组合成一个新的区域地址。例如“B2:A3”和“A3:D10”,先从第一对字符B和A中取出最小值A,然后从第二对字符2和3中取出最小值2,再从第三对字符A和D中取出最大值D,最后从3和10中取最大值10,将这四个字符与冒号串联起来即为“A2:D10”。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
检察院不批捕取保候审后还会提起诉讼吗 我老公长期在外地工作,每次回来后我们合房的第二天,两个人都觉得特别... 为什么第三次干事,老公不觉得紧,而我也没有那么疼呢,事后觉得有点涨 老公今年才25岁,为什么每次跟我做完爱后就倒头大睡,看起来很累的样子... ...回来就和我做了,做了两次,时间也比以前长,很累,谁知道为什么... 深圳市铭利达精密机械有限公司公司介绍 深圳市宝鑫五金机械厂公司介绍 CNC华明集团企业介绍 华为手机怎么退出talkback模式 华为手机talkback是什么意思_百度... ...开启了一个碰什么都会说那是什么的,这是怎么回事怎么解决? excel中的单元格引用有那几种方式?分别举例说明 梦见拉屎在内裤里,后来就弄了出来。这个梦什么意思啊? 梦见自己屎尿拉到裤子里,是什么意思? 做梦大便拉在裤子上了,这样的梦代表什么事? 梦见拉大便在内裤上是什么意思? 请教解梦,梦见大便拉在裤子里什么征兆 劳务关系中劳动者死亡伤残赔偿标准赔偿多少 劳务工伤赔偿标准 劳务关系中的工伤要补偿多少? 劳务关系九级受伤赔偿标准是什么 劳动合同法伤残赔偿标准包括什么 劳务工伤的赔偿标准 微信聊天时间怎么更改。急? 劳务伤残九级赔偿标准 劳动和劳务工伤赔偿标准 劳动伤残鉴定标准及赔偿标准 微信能恢复多长时间的聊天记录? 劳务关系十级伤残能赔多少钱 劳务关系伤残赔偿标准 微信消息能保存多长时间、条数规则是什么? 吃鱼被卡到该怎么办 在Excel中,单元格引用可以分为( )、( )和( )三种方式。 吃鱼被卡到了,怎么办 iPhone X,XR,XS,XS Max有什么区别?上市时间分别是? 吃鱼卡住了怎么办 excel2010对单元格的引用有哪几种方式?请简述它们之间的区别? 吃鱼的时候不小心被鱼刺卡到,急救的措施有什么? excel怎么引用引用单元格的引用 吃鱼的时候被鱼卡到了怎么办 Excel在对单元格的引用时有哪些引用方式,他们有什么差别 被鱼刺卡到了,该怎么办? 客人被鱼刺卡到,如何处理? excel中单元格引用的两种基本方式,什么是绝对引用 吃鱼被鱼刺卡了怎么办? excel 单元格引用 吃鱼被鱼刺卡到,最好的处理方式是怎样的? 被鱼刺卡到了怎么办 被鱼刺卡到了怎么处理? 吃鱼的时候被卡到了怎么办?好难受呀 吃鱼被鱼刺卡到了该怎么办? 吃鱼时被刺卡到了,该如何自救?