Excel精英培训网

 找回密码
 注册
123
返回列表 发新帖
楼主: liuguansky

[习题] 【字典201201班】B组(B01—B22)第1讲作业上交贴

  [复制链接]
发表于 2012-6-6 00:56 | 显示全部楼层
本帖最后由 7777 于 2012-6-6 08:28 编辑

B15:7777
最近比较忙,这么晚了还做作业,希望老师谅解,麻烦改下!!
昨晚1点交的作业,早上起来想了想,好像有点漏洞,再修改下。
Sub aa() '作业代码写在该模块
  Dim D As New Dictionary
Dim I As Integer
Dim ARR
ARR = Range("A2:C111")
For I = 1 To UBound(ARR)
If ARR(I, 2) = Range("G1") Then
D(ARR(I, 1)) = D(ARR(I, 1)) + ARR(I, 3)
End If
Next
Range("F3:G15").ClearContents
Range("F3").Resize(D.Count, 1) = Application.WorksheetFunction.Transpose(D.Keys)
Range("G3").Resize(D.Count, 1) = Application.WorksheetFunction.Transpose(D.Items)
D.RemoveAll
End Sub


回复

使用道具 举报

发表于 2012-6-6 08:39 | 显示全部楼层
用事件来完成:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim D As New Dictionary
Dim I As Integer
Dim ARR
ARR = Range("A2:C111")
For I = 1 To UBound(ARR, 1)
If ARR(I, 2) = Range("G1") Then
D(ARR(I, 1)) = D(ARR(I, 1)) + ARR(I, 3)
End If
Next
Range("F3:G15").ClearContents
Range("F3").Resize(D.Count, 1) = Application.WorksheetFunction.Transpose(D.Keys)
Range("G3").Resize(D.Count, 1) = Application.WorksheetFunction.Transpose(D.Items)
D.RemoveAll
   
End Sub

评分

参与人数 1 +5 收起 理由
wcymiss + 5 结果错误,未考虑“全部”

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 01:23 , Processed in 0.285344 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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