excel表里的函数range怎么用的

如题所述

Range并不是Excel中的函数,而是VBA中VBA代码中最常用的对象,Range对象可以是某一单元格、某一单元格区域、某一行、某一列、或者是多个连续或非连续的区域组成的区域。

下面一个简单的VBA程序,可以全面地理解Range对象的用法,以及与Cells的区别。

Sub RangVsCellsDemo()
Dim r

' 1. 先看 Range 和 Cells 的定义
' A. Range 的定义为 Class Range,表示 Range 是一个类,可以根据其所带的参数构造一个Range 对象
' B. Cells 的定义为 Property Cells As Range,表示 Cells 是一个属性,返回一个 Range 对象,具体应
' 用于不同对象时返回对象不同(帮助时说的明白)

' 2. Cells主要作用在于他可以简洁的返回一个Range对象,而使用Range的构造方法相对代码比较长
' 比如在2003里,单个的Cells就相当于Range("1:65536"),显然,用前者更简洁明了,顺便提一下,Cells后带
' 括号的用法应是 Range 对象 Item 属性的用法,因为 Item 属性是 Range 对象的默认属性,Item省略写
' 出来罢了
Range("1:65536")(2, 3).Select ' 选取C2单元格
Range("1:65536")(2, "d").Select ' 选取D2单元格
Range("1:65536")(256 + 5).Select ' 选取E2单元格
Cells(2, 3).Select ' 选取C2单元格
Cells(2, "d").Select ' 选取D2单元格
Cells(256 + 5).Select ' 选取E2单元格

' 3. Cells 为属性,所以,只有定义了该属性的特定对象才能使用,并且返回特定的 Range 对象,总的来讲是返
' 回对象的全部单元格,特别注意,这里所讲的全部并不是我们肉眼所看到的,对于有的联合区域,返回的单元格
' 与想象的有点差别,比如 Range("A1:C5,B2:D6").Cells.Count 返回值是30,而我们肉眼看到 A1:C5 和 B2:D6
' 两片区域的单元格个数只有22个
Set r = Cells ' 应用于 Application 对象,Application 省略
Set r = Application.Cells ' 应用于 Application 对象
Set r = Worksheets(1).Cells ' 应用于 Worksheet 对象
Set r = Range("A1:C5,B2:D6").Cells ' 应用于 Range 对象,这个就我个人而言,找不出很好的应用

' 4. Range为类类型,可以通过不同的方法构造Range对象
' a. 用区域名称, 用 A1 样式引用的宏语言
Set r = Range("A1:B2") ' 区域操作符(冒号)
Set r = Range("A1:C5 B2:D6") ' 相交区域操作符(空格)
Set r = Range("A1:C5,B2:D6") ' 合并区域操作符(逗号)
' Set r = Range("UserRng") ' 自定义名称,要先建立自定义名称UserRng
' b. 区域左上角和右下角的单元格
Set r = Range(Range("A1"), Range("IV65536"))

End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-05

range(目标区域地址),目标区域地址就是参数。

这个函数是在循环中动态取得范围。

Range("b" & i & ":h" & i)这个格式是对的。

常用的格式就是

Range("a1", "b4").Select

Range("a2:b4").Select

扩展资料:

range是一种计算机术语,在Excel中,Range集合代表某一单元格、某一行、某一列、某一选定区域(该区域可包含一个或若干连续单元格区域),或者某一三维区域。

可用 Range(arg)(其中 arg 为区域名称)来返回代表单个单元格或单元格区域的 Range 对象。

表示单元格——range("A1")表示第一行第一列的单元格,实质上于cells(1,1)效果一样。两者在这种情况下是一样的,但是两者的关系可以这样理解,range对象是单元格对象的集合。

range对象在表示单元格的时候不可以像cells(i,j)一样range("ij")表示的,这是要注意的一点!

range对象表示连续的区域有两种表达:第一是range("起始单元格","结束单元格"),第二是range("起始单元格:结束单元格")。

对于不连续的区域,range的表达是:range("起始单元格1:结束单元格1,起始单元格2:结束单元格2")

参考资料:range函数

第2个回答  2011-02-13
使用函数Vlookup()应该可以解决你的问题,比如:

甲表里面有如下字段:
工号 姓名 部门 生日
123 张三 资讯 8/3

乙表里有如下字段:
工号 姓名 年龄
123 张三 23

那么就可以使用Vlookup()函数关联两个表的数据,关联依据最好选用“工号”
比如,在乙表中对应甲表中的生日:
=VLOOKUP(A:A,甲!A:D,4,0) ,其中,
1、“A:A”,表示乙表中与甲表关联的依据(工号),
2、“甲!A:D”表示在甲表中,从“A列(工号)到D列(生日)”,
3、“4”表示甲表中A:D间隔为4,
4、“0”表示精确匹配,即工号需要完全一致才可以对应。

该函数详细语法如下,需要仔细阅读才可完全理解,供参考:

——————————————————————
VLOOKUP

在表格或数值数组的首列查找指定的数值,并由此返回表格或数组当前行中指定列处的数值。当比较值位于数据表首列时,可以使用函数 VLOOKUP 代替函数 HLOOKUP。

在 VLOOKUP 中的 V 代表垂直。

语法

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

Lookup_value 为需要在数组第一列中查找的数值。Lookup_value 可以为数值、引用或文本字符串。

Table_array 为需要在其中查找数据的数据表。可以使用对区域或区域名称的引用,例如数据库或列表。

如果 range_lookup 为 TRUE,则 table_array 的第一列中的数值必须按升序排列:…、-2、-1、0、1、2、…、-Z、FALSE、TRUE;否则,函数 VLOOKUP 不能返回正确的数值。如果 range_lookup 为 FALSE,table_array 不必进行排序。

通过在“数据”菜单中的“排序”中选择“升序”,可将数值按升序排列。

Table_array 的第一列中的数值可以为文本、数字或逻辑值。

文本不区分大小写。

Col_index_num 为 table_array 中待返回的匹配值的列序号。Col_index_num 为 1 时,返回 table_array 第一列中的数值;col_index_num 为 2,返回 table_array 第二列中的数值,以此类推。如果 col_index_num 小于 1,函数 VLOOKUP 返回错误值值 #VALUE!;如果 col_index_num 大于 table_array 的列数,函数 VLOOKUP 返回错误值 #REF!。

Range_lookup 为一逻辑值,指明函数 VLOOKUP 返回时是精确匹配还是近似匹配。如果为 TRUE 或省略,则返回近似匹配值,也就是说,如果找不到精确匹配值,则返回小于 lookup_value 的最大数值;如果 range_value 为 FALSE,函数 VLOOKUP 将返回精确匹配值。如果找不到,则返回错误值 #N/A。

说明

如果函数 VLOOKUP 找不到 lookup_value,且 range_lookup 为 TRUE,则使用小于等于 lookup_value 的最大值。
如果 lookup_value 小于 table_array 第一列中的最小数值,函数 VLOOKUP 返回错误值 #N/A。
如果函数 VLOOKUP 找不到 lookup_value 且 range_lookup 为 FALSE,函数 VLOOKUP 返回错误值 #N/A。
第3个回答  2018-06-26

Excel的VBA编程中,很常用到的是通过字符串返回Range的功能,然后进一步对Range操作,这里水文工具集介绍一个实用的VBARange函数RangeFromAddress,具体源代码如下:

上面的RangeFromAddress还引用到两个函数,具体代码如下

01.Function GetObjectParentSheet(aObject As Object) As Object

02.Dim op As Object

03.On Error Resume Next

04. 

05.If aObject Is Nothing Then GoTo ErrorExit

06.Set op = aObject.Parent

07.If op Is Nothing Then GoTo ErrorExit

08. 

09.If TypeOf op Is Workbook Then

10.Set GetObjectParentSheet = aObject

11.GoTo ErrorExit

12.End If

13. 

14.Do Until (TypeOf op Is Worksheet) Or (TypeOfop Is Application)

15.Set op = op.Parent

16.Loop

17. 

18.If TypeOf op Is Worksheet Then SetGetObjectParentSheet = op

19. 

20.ErrorExit:

21.Exit Function

22.End Function

23. 

24. 

25.Function GetObjectParentWorkbook(aObject AsObject) As Workbook

26.Dim o As Object

27. 

28.On Error GoTo ErrorHandle

29. 

30.If aObject Is Nothing Then GoTo ErrorExit

31.Set o = aObject.Parent

32. 

33.If TypeOf aObject Is Workbook Then

34.Set GetObjectParentWorkbook = aObject

35.GoTo ErrorExit

36.End If

37. 

38.Do Until (TypeOf o Is Workbook) Or (TypeOf o Is Application)

39.Set o = o.Parent

40.Loop

41. 

42.If TypeOf o Is Workbook Then SetGetObjectParentWorkbook = o

43. 

44.ErrorExit:

45.Exit Function

46. 

47.ErrorHandle:

48.Resume ErrorExit

49.End Function

第4个回答  2015-10-26
没有这个函数,只有AVERAGE
RANGE其实就是选择计算范围
相似回答