Excel精英培训网

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

[已解决]求VBA关键语句解释

[复制链接]
发表于 2012-1-6 08:49 | 显示全部楼层 |阅读模式
本帖最后由 ybchxj2010 于 2012-1-6 08:52 编辑

有以下代码:作用是利用字典过滤区域内重复出现的记录:

Sub 过滤重复记录()   
Dim d As New Dictionary,t
    For i = 2 To 5
        Set d(Cells(i, 1) .Value)= Range(Cells(i, 1), Cells(i, 4))
Next
t=d.items        
[A11].Resize(d.Count, 4) = Application.Transpose(Application.Transpose(t))
End Sub

问题一:Set语句在字典中运用详解。
问题二:转置函数二次叠用的语句解释。
拜托各位老师!
最佳答案
2012-1-6 10:09
SET语句
SET语句在字典中和不在字典中的使用可以说并无区别,通常是把一个对象存储到变量中,你代码中的SET是将RANGE对象存储到字典的ITEM中,你把d(Cells(i, 1) .Value)也看作一个变量的话,就不难理解了。
二次转置
通常的,转置用于将二维数组的一列或一行转为一维数组以方便join、filter等处理。但你这里的却不是。你这里的数组t是一个存有一堆RANGE对象的一维数组,一次转置后得到一个由这些RANGE对象的组成的二维数组,但行列被“转置”了,因此需要第二次转置。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-1-6 09:01 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2012-1-6 09:07 | 显示全部楼层
菜鸟锐 发表于 2012-1-6 09:01
http://www.yesky.com/imagesnew/software/tsql/ts_set-set_40c4.htm

老师!你可不可以就这个示例讲的通俗的?我很菜。没发现这里面和SQL扯上什么关系。
回复

使用道具 举报

发表于 2012-1-6 09:07 | 显示全部楼层
我觉得这里用set 和两次转职没有什么意义。
我一般也不这么用。下面这个帖子对字典的代码解释的很全面了。可以去看看

常见字典用法集锦及代码详解
http://www.excelpx.com/thread-145901-1-1.html

回复

使用道具 举报

 楼主| 发表于 2012-1-6 09:16 | 显示全部楼层
我就从《蓝桥玄霜》老师那里摘抄的代码,看不太懂才问,另外蓝桥老师这篇文章也有不少错误的地方。
回复

使用道具 举报

 楼主| 发表于 2012-1-6 09:20 | 显示全部楼层
问题中的代码来源于蓝桥老师《实例5  前期绑定的字典实例》,我原来理解的Transpose函数简单的认为是行列互换而已。
回复

使用道具 举报

发表于 2012-1-6 09:24 | 显示全部楼层
ybchxj2010 发表于 2012-1-6 09:20
问题中的代码来源于蓝桥老师《实例5  前期绑定的字典实例》,我原来理解的Transpose函数简单的认为是行列互换 ...
  1. Dim d As Object
  2. Set d = CreateObject("scripting.dictionary")
复制代码

这是后期绑定,楼主的是前期绑定,蓝桥老师的代码中应该有写吧!{:3912:}
至于你说的两次transpose,我只知道他能把二维数组转换为一维数组。{:4212:}
回复

使用道具 举报

发表于 2012-1-6 09:26 | 显示全部楼层
进来学习一下~~~~~~厉害
回复

使用道具 举报

 楼主| 发表于 2012-1-6 09:39 | 显示全部楼层
代码我曾经演示过,完全ok!,可是这转置二次把我弄懵了。
回复

使用道具 举报

 楼主| 发表于 2012-1-6 09:44 | 显示全部楼层
此代码中KEY关键字是第一列单元格的值,条目是一个一行四列的单元格区域,Set语句我还好理解一点,就这个转置???拜托。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-29 14:03 , Processed in 0.577109 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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