Excel精英培训网

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

[已解决]关于union的问题,请高手帮助解答!!!

[复制链接]
发表于 2014-1-3 12:54 | 显示全部楼层 |阅读模式
    Sub dd()
      Dim rg As Range, x As Integer
      For x = 2 To 10 Step 2   
        If x = 2 Then Set rg = Cells(x, 1)

        Set rg = Union(rg, Cells(x, 1))
      Next x                             
      rg.Select

    End Sub


我的问题是: If x = 2 Then Set rg = Cells(x, 1)        当x=2, rg=A2;
                 Set rg = Union(rg, Cells(x, 1))   由于上一句中rg=a2, 这句话中是不是同是存在两个A2(union(range(“A2”),                                                                range(“A2”))?
如果不是的话,请详解一下,当x=2和x=4时, Set rg = Union(rg, Cells(x, 1)) 包含的单元格?
最佳答案
2014-1-3 13:10
  1. Sub dd()
  2.     Dim rg As Range, x As Integer
  3.     For x = 2 To 10 Step 2
  4.         If x = 2 Then Set rg = Cells(x, 1)
  5.         Debug.Print "union前:" & rg.Address
  6.         Set rg = Union(rg, Cells(x, 1))
  7.         Debug.Print "union后:" & rg.Address
  8.     Next x
  9.     rg.Select
  10. End Sub
复制代码
看下立即窗口的内容。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-1-3 13:08 | 显示全部楼层
当x=2和x=4时, Set rg = Union(rg, Cells(x, 1)) 包含的单元格?
你直接在set rg=union(rg,cells(x,1))这里下断点嘛。
debug.print rg.address
Set rg = Union(rg, Cells(x, 1))
debug.print rg.address
stop
回复

使用道具 举报

发表于 2014-1-3 13:09 | 显示全部楼层
x=2的时候就是cells(2,1)
x=4时就是 cells(2,1),cells(4,1)这两个单元格了。
回复

使用道具 举报

发表于 2014-1-3 13:10 | 显示全部楼层    本楼为最佳答案   
  1. Sub dd()
  2.     Dim rg As Range, x As Integer
  3.     For x = 2 To 10 Step 2
  4.         If x = 2 Then Set rg = Cells(x, 1)
  5.         Debug.Print "union前:" & rg.Address
  6.         Set rg = Union(rg, Cells(x, 1))
  7.         Debug.Print "union后:" & rg.Address
  8.     Next x
  9.     rg.Select
  10. End Sub
复制代码
看下立即窗口的内容。
回复

使用道具 举报

发表于 2014-1-3 13:11 | 显示全部楼层
QQ截图20140103131409.jpg
回复

使用道具 举报

 楼主| 发表于 2014-1-3 13:15 | 显示全部楼层
hwc2ycy 发表于 2014-1-3 13:09
x=2的时候就是cells(2,1)
x=4时就是 cells(2,1),cells(4,1)这两个单元格了。

可是在x=2的时候,通过Set rg = Cells(x, 1),rg=A2;当运行Set rg = Union(rg, Cells(x, 1)) ,是否包含A2(rg)和A2(Cells(x, 1))? 不好意思,是新手。
回复

使用道具 举报

发表于 2014-1-3 13:21 | 显示全部楼层
pluto720 发表于 2014-1-3 13:15
可是在x=2的时候,通过Set rg = Cells(x, 1),rg=A2;当运行Set rg = Union(rg, Cells(x, 1)) ,是否包含A ...

结果还是A2.


回复

使用道具 举报

 楼主| 发表于 2014-1-3 13:25 | 显示全部楼层
hwc2ycy 发表于 2014-1-3 13:21
结果还是A2.

我想问一下中间的过程我理解的是否正确?
回复

使用道具 举报

发表于 2014-1-3 13:33 | 显示全部楼层
pluto720 发表于 2014-1-3 13:25
我想问一下中间的过程我理解的是否正确?
  1.     Dim rg As Range
  2.     Set rg = [a1]
  3.     Debug.Print "union前rg--" & rg.Address
  4.     Set rg = Union(rg, [b3:c4])
  5.     Debug.Print "union后rg--" & rg.Address
  6.     Set rg = Union(rg, [b3:c4])
  7.     Debug.Print "union后rg--" & rg.Address
  8.     Set rg = Union(rg, [b3])
  9.     Debug.Print "union后rg--" & rg.Address
  10.     Set rg = Union(rg, [b4:c5])
  11.     Debug.Print "union后rg--" & rg.Address
  12.     Set rg = Union(rg, [a1:c6])
  13.     Debug.Print "union后rg--" & rg.Address
复制代码
再写个例子,你看看,重复的区域。

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 15:01 , Processed in 0.318059 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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