Excel精英培训网

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

[已解决]学习字典遇到困难

  [复制链接]
发表于 2011-1-21 15:19 | 显示全部楼层 |阅读模式
本帖最后由 mn860429 于 2011-1-21 15:21 编辑

二、代码:
  1. Sub 保留原数据()  ‘by:ldy888
  2. ‘前期绑定,需先引用c:\windows\system32\scrrun.dll
  3.     Dim d As New Dictionary,t
  4.     For i = 2 To 5
  5.         Set d(Cells(i, 1) & "") = Range(Cells(i, 1), Cells(i, 4))
  6. Next
  7. t=d.items
  8. [A11].Resize(d.Count, 4) = Application.Transpose(Application.Transpose(t))
  9. End Sub
复制代码

代码中的两次Transpose有什么用呢?两次不是等于没转?{:081:}
还有Set d(Cells(i, 1) & "") = Range(Cells(i, 1), Cells(i, 4))和d(Cells(i, 1) & "") = Range(Cells(i, 1), Cells(i, 4))效果一样吗?{:081:}


帖子地址:
常见字典用法集锦及代码详解
http://www.excelpx.com/forum.php?mod=viewthread&tid=145901&fromuid=280638


最佳答案
2011-1-21 15:35
1、Set是对象的赋值,字典中实质存储的是Range对象
2、t是一个一维数组,0~3,横向,其中存放Range对象
     你可以逐步执行一下transpose看结果
  1. Sub sss()

  2.     Dim d As New Dictionary, t
  3.     For i = 2 To 5
  4.         Set d(Cells(i, 1) & "") = Range(Cells(i, 1), Cells(i, 4))
  5.     Next
  6.     Stop
  7.     t = d.items
  8.     t = Application.Transpose(t)
  9.     t = Application.Transpose(t)
  10.     [A11].Resize(d.Count, 4) = t
  11. End Sub
复制代码
发表于 2011-1-21 15:27 | 显示全部楼层
不一样的,transpose转Excel中一行的数据,转第一次是变一列,再转一次虽然是转成一行,但此时这一行不是二维数组了.而之前的一行是二维的,可以从本地窗口看数组变化.

评分

参与人数 1 +5 收起 理由
mn860429 + 5 自己还要慢慢学习

查看全部评分

回复

使用道具 举报

发表于 2011-1-21 15:29 | 显示全部楼层
回复

使用道具 举报

发表于 2011-1-21 15:32 | 显示全部楼层
用set就是对象,不用set只是对值进行赋值
回复

使用道具 举报

发表于 2011-1-21 15:35 | 显示全部楼层    本楼为最佳答案   
1、Set是对象的赋值,字典中实质存储的是Range对象
2、t是一个一维数组,0~3,横向,其中存放Range对象
     你可以逐步执行一下transpose看结果
  1. Sub sss()

  2.     Dim d As New Dictionary, t
  3.     For i = 2 To 5
  4.         Set d(Cells(i, 1) & "") = Range(Cells(i, 1), Cells(i, 4))
  5.     Next
  6.     Stop
  7.     t = d.items
  8.     t = Application.Transpose(t)
  9.     t = Application.Transpose(t)
  10.     [A11].Resize(d.Count, 4) = t
  11. End Sub
复制代码
回复

使用道具 举报

发表于 2011-1-21 16:12 | 显示全部楼层
楼主的代码非常非常有意思,简简单单的几行透出的东西却不少{:021:}
回复

使用道具 举报

发表于 2011-1-21 16:14 | 显示全部楼层
越想想觉得有意思,再来{:1112:}{:1112:}{:1112:}{:1112:}
回复

使用道具 举报

 楼主| 发表于 2011-1-21 17:23 | 显示全部楼层
自己做了个简单的例子可以还是不怎么明白,数组的结果没有转化前怎么有两个括号,表示数组的数组?
未命名.jpg
工作簿1.rar (10.37 KB, 下载次数: 18)
回复

使用道具 举报

发表于 2011-1-21 18:08 | 显示全部楼层
{:251:}我也一知半解,就那么在用。
回复

使用道具 举报

 楼主| 发表于 2011-1-21 18:10 | 显示全部楼层
{:211:}{:211:}先用着吧
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 14:53 , Processed in 0.456210 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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