Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2824|回复: 3

[已解决]transpose 运用问题: 这里的range里面为何要用逗号???

[复制链接]
发表于 2015-3-3 02:03 | 显示全部楼层 |阅读模式
sub 折分()
       dim pp1$,pp2$,nRow%,ds,Rrr(),s(1 To 3) As Integer
       Set ds = CreateObject("scripting.dictionary")
         pp1 = Join(WorksheetFunction.Transpose(Range(Range("g2"), Range("g1").End(xlDown))), ",")


这个例子中,最后一句中的  Range(Range("g2"), Range("g1").End(xlDown))
里面的那个Range("g2"), Range("g1")  中间为什么要用逗号呢?  不是一个区域要用":"来连接吗???
最佳答案
2015-3-3 09:30
应该这么理解:

Range指定单元格区域时,可以:
① 1个参数的用法: Range([单元格区域地址])
以【单元格地址】的【字符串变量】为参数,
返回该【地址参数】指定的【一个或多个】(以逗号分隔)的【矩形区域】。
其中,矩形区域是由【1个以上的单元格】组成的【矩形区域】。
矩形区域可以藉由指定【左上、右下】或指定【左下、右上】的两个单元格地址,
以【:】连接作为矩形区域的地址字符串变量。(单个单元格时当然直接地址就可以了)

例如:
  1. Sub test()
  2.     Range("a1").Select '单一单元格区域  
  3.     Range("b2:c3").Select '左上右下的矩形单元格区域
  4.     Range("b3:c2").Select '左下右上的矩形单元格区域
  5.     Range("a1,b2:c3").Select '2个区域
  6.     Range("a1,b2:c3,e4,g5:h8").Select '4个区域
  7.     Range("a1,a1:c3,e4,c2:h8").Select '4个区域、部分重叠
  8. End Sub
复制代码
以逗号分隔的矩形区域个数可能是30个以内或更多(并非无限)
实际相当于把多个矩形区域Union在一起的作用。
…………

其中,列标为合法的英文字母(不区分大小写)【合法是指实际工作表存在的列标】
行标为合法的自然数(>0的正整数)【合法是指实际工作表存在的行】
都可以用变量代替。【字符串变量、或字符以及变量构成的字符串】
最简单的例子是:
t = "A1"
Range(t).Select

以及、
m=100
Range("a" & m).Select
Range("a2:b" & m).Select


^_^ ^_^ ^_^

② 2个参数的用法:Range(Rng1,Rng2)
以Rng1区域 和 Rng2区域为参数,返回由这两个区域的【最大边界】构成的【矩形区域】。
最大边界是指:
两个区域中的最小行到最大行构成行范围、两个区域中的最小列到最大列构成列范围、
由此得到的矩形区域。

例如:
  1. Sub test2()
  2.     Range([a1], [d3]).Select
  3.     Range([d4], [b2]).Select
  4.     Range([b4], [e1]).Select
  5.     Range([a1:b2], [c3:d4]).Select
  6.     Range([b5:c2], [c3:d4]).Select   
  7. End Sub
复制代码
为简化起见,其中的Rng1和Rng2直接使用了[地址]的最简形式。
也可以使用如Range()指定的1个或以上单元格的矩形区域, 或Cells()指定的单个单元格区域。

【注意】
此处的2个参数Rng1和Rng2,必须为有效的【Range范围对象】,不是单元格地址字符串。

如果以字符串变量为参数时,必须外套Range()使之转为有效的Range区域。
不能以Range("地址1","地址2")的方式引用。→ 只能是:Range(Range("地址1"),Range("地址2")) 这样。

注意,我前面代码例子中的[a1:b2]并非字符串格式,而已经是=Range("a1:b2")的单元个区域对象了。

以上科普完毕。


发表于 2015-3-3 04:54 | 显示全部楼层
本帖最后由 dsmch 于 2015-3-3 05:22 编辑

Range(开始单元格, 结束单元格)
range("a1:b10"),括号内是字符串,不是单元格
回复

使用道具 举报

发表于 2015-3-3 09:30 | 显示全部楼层    本楼为最佳答案   
应该这么理解:

Range指定单元格区域时,可以:
① 1个参数的用法: Range([单元格区域地址])
以【单元格地址】的【字符串变量】为参数,
返回该【地址参数】指定的【一个或多个】(以逗号分隔)的【矩形区域】。
其中,矩形区域是由【1个以上的单元格】组成的【矩形区域】。
矩形区域可以藉由指定【左上、右下】或指定【左下、右上】的两个单元格地址,
以【:】连接作为矩形区域的地址字符串变量。(单个单元格时当然直接地址就可以了)

例如:
  1. Sub test()
  2.     Range("a1").Select '单一单元格区域  
  3.     Range("b2:c3").Select '左上右下的矩形单元格区域
  4.     Range("b3:c2").Select '左下右上的矩形单元格区域
  5.     Range("a1,b2:c3").Select '2个区域
  6.     Range("a1,b2:c3,e4,g5:h8").Select '4个区域
  7.     Range("a1,a1:c3,e4,c2:h8").Select '4个区域、部分重叠
  8. End Sub
复制代码
以逗号分隔的矩形区域个数可能是30个以内或更多(并非无限)
实际相当于把多个矩形区域Union在一起的作用。
…………

其中,列标为合法的英文字母(不区分大小写)【合法是指实际工作表存在的列标】
行标为合法的自然数(>0的正整数)【合法是指实际工作表存在的行】
都可以用变量代替。【字符串变量、或字符以及变量构成的字符串】
最简单的例子是:
t = "A1"
Range(t).Select

以及、
m=100
Range("a" & m).Select
Range("a2:b" & m).Select


^_^ ^_^ ^_^

② 2个参数的用法:Range(Rng1,Rng2)
以Rng1区域 和 Rng2区域为参数,返回由这两个区域的【最大边界】构成的【矩形区域】。
最大边界是指:
两个区域中的最小行到最大行构成行范围、两个区域中的最小列到最大列构成列范围、
由此得到的矩形区域。

例如:
  1. Sub test2()
  2.     Range([a1], [d3]).Select
  3.     Range([d4], [b2]).Select
  4.     Range([b4], [e1]).Select
  5.     Range([a1:b2], [c3:d4]).Select
  6.     Range([b5:c2], [c3:d4]).Select   
  7. End Sub
复制代码
为简化起见,其中的Rng1和Rng2直接使用了[地址]的最简形式。
也可以使用如Range()指定的1个或以上单元格的矩形区域, 或Cells()指定的单个单元格区域。

【注意】
此处的2个参数Rng1和Rng2,必须为有效的【Range范围对象】,不是单元格地址字符串。

如果以字符串变量为参数时,必须外套Range()使之转为有效的Range区域。
不能以Range("地址1","地址2")的方式引用。→ 只能是:Range(Range("地址1"),Range("地址2")) 这样。

注意,我前面代码例子中的[a1:b2]并非字符串格式,而已经是=Range("a1:b2")的单元个区域对象了。

以上科普完毕。


评分

参与人数 1 +1 收起 理由
lixianhai + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2015-3-3 13:02 | 显示全部楼层
香川群子 发表于 2015-3-3 09:30
应该这么理解:

Range指定单元格区域时,可以:

香川群子=想穿裙子?{:101:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 11:40 , Processed in 0.149625 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表