Excel精英培训网

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

[已解决]请问下面代码含义

[复制链接]
发表于 2016-5-14 21:44 | 显示全部楼层 |阅读模式
请问解释下面这句代码的意思:If Len(arr(i, j)) And Not d.exists(arr(i, j)) Then d(arr(i, j)) = ""
最佳答案
2016-5-14 22:05
Sub t()
    Dim arr, i&, j%, d As Object
    arr = Sheets("总日课表").Range("C3").CurrentRegion.Value
    Set d = CreateObject("scripting.dictionary")
    For i = 4 To UBound(arr)
        For j = 4 To UBound(arr, 2) Step 2
            If Len(arr(i, j)) And Not d.exists(arr(i, j)) Then d(arr(i, j)) = ""
        Next
    Next
    Sheets("提取教师名单").Range("A2").Resize(d.Count) = Application.Transpose(d.keys)
End Sub


如果遍历到的值既不是空值,而且又未被字典记录过,那么字典记录该值

提取教师名单.rar

138.58 KB, 下载次数: 2

发表于 2016-5-14 22:05 | 显示全部楼层    本楼为最佳答案   
Sub t()
    Dim arr, i&, j%, d As Object
    arr = Sheets("总日课表").Range("C3").CurrentRegion.Value
    Set d = CreateObject("scripting.dictionary")
    For i = 4 To UBound(arr)
        For j = 4 To UBound(arr, 2) Step 2
            If Len(arr(i, j)) And Not d.exists(arr(i, j)) Then d(arr(i, j)) = ""
        Next
    Next
    Sheets("提取教师名单").Range("A2").Resize(d.Count) = Application.Transpose(d.keys)
End Sub


如果遍历到的值既不是空值,而且又未被字典记录过,那么字典记录该值
回复

使用道具 举报

 楼主| 发表于 2016-5-14 22:15 | 显示全部楼层
爱疯 发表于 2016-5-14 22:05
Sub t()
    Dim arr, i&, j%, d As Object
    arr = Sheets("总日课表").Range("C3").CurrentRegion.Va ...

Len(arr(i, j)) ,数组长度表示遍历的值不是空值;Not d.exists(arr(i, j)) 字典不存在表示未被字典记录过; d(arr(i, j)) = ""表示字典记录该值,是这样吗?
回复

使用道具 举报

发表于 2016-5-14 22:26 | 显示全部楼层
arr(i, j)是数组arr里第i行第j列的元素。

Len(arr(i, j)) ,如果这个元素的值,长度为0,那么该值就是空值;否则不是空值。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 09:08 , Processed in 0.308587 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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