问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

EXCEL如何用VBA数据字典:除去重复后汇总

发布网友 发布时间:2022-05-16 08:53

我来回答

3个回答

热心网友 时间:2023-10-17 08:10

以下为代码及注释:

Sub main()
Set dic = CreateObject("scripting.dictionary") '定义词典
arr = Range("A1:C500") '假设最大行数为500,将A1至C500区域放入数组
For i = 1 To UBound(arr) '从1到数组最大行数循环
If arr(i, 1) <> "" And arr(i, 1) <> "装置" Then '提出空格和标题行
dic(arr(i, 1)) = dic(arr(i, 1)) + arr(i, 3) '用字典去除重复,并且进行数量累加
End If
Next i
[e2].Resize(dic.Count, 1) = Application.Transpose(dic.keys) '将字典的keys(即A列不重复的值)转置并放在E列
[f2].Resize(dic.Count, 1) = Application.Transpose(dic.items) '将字典的kItems(即累加结果)转置并放在E列
End Sub

热心网友 时间:2023-10-17 08:11

Sub LJLK()
    Set d = CreateObject("scripting.dictionary")
    [E:F] = ""
    For I = 1 To [A65536].End(3).Row
       IF CELLS(I,1)<>"" THEN 
           aa = Cells(I, 1) & "|" & Cells(I, 3)
           d(aa) = ""
        END IF
    Next
    arr = d.keys
    For x = 0 To UBound(arr)
        ss = Split(arr(x), "|")
        Cells(x + 1, "e") = ss(0)
        Cells(x + 1, "f") = ss(1)
    Next
    Set d = Nothing
End Sub

热心网友 时间:2023-10-17 08:11

Sub caifen()

Dim Myr&, Arr, x&

Dim d, d1, d2, i&, j&

Set d = CreateObject("Scripting.Dictionary")

Set d1 = CreateObject("Scripting.Dictionary")

Set d2 = CreateObject("Scripting.Dictionary")

Myr = [a65536].End(xlUp).Row

Arr = Range("a2:a" & Myr)

Range("c2:e" & Myr).ClearContents

my = Array("MOTO", "诺基亚", "三星", "索爱")

gc = Array("OPPO", "联想", "天语", "金立", "步步高", "波导", "TCL", "酷派")

For x = 1 To UBound(Arr)

For i = 0 To UBound(my)

If InStr(Arr(x, 1), my(i)) > 0 Then

d(Arr(x, 1)) = ""

GoTo 100

End If

Next i

For j = 0 To UBound(gc)

If InStr(Arr(x, 1), gc(j)) > 0 Then

d1(Arr(x, 1)) = ""

GoTo 100

End If

Next j

d2(Arr(x, 1)) = ""

100:

Next x

Range("c2").Resize(UBound(d.keys) + 1, 1) = Application.Transpose(d.keys)

Range("d2").Resize(UBound(d1.keys) + 1, 1) = Application.Transpose(d1.keys)

Range("e2").Resize(UBound(d2.keys) + 1, 1) = Application.Transpose(d2.keys)

End Sub  

这是一段VBA代码,主要的作用是将"A"列中的数据按照一定规则分类,并将分类结果分别放置在"C"、"D"、"E"列中。

具体来说,代码中实现的步骤如下:

三、代码详解

1、Set d2 = CreateObject("Scripting.Dictionary")  :针对三个不同的种类,创建d、d1、d2三个字典对象。

2、Myr = [a65536].End(xlUp).Row  :把A列最后一行不为空白的行数赋给变量Myr。

3、Arr = Range("a2:a" & Myr)  :把A2开始的有数据的单元格区域赋给变量Arr。

4、Range("c2:e" & Myr).ClearContents :把C2到E列单元格区域清空。

5、my = Array("MOTO", "诺基亚", "三星", "索爱") :VBA函数Array返回一个一维数组,默认下界为0。把Array函数返回的数组赋给变量my(贸易两汉字的首字母)。

6、gc = Array("OPPO", "联想", "天语", "金立", "步步高", "波导", "TCL", "酷派") :把Array函数返回的数组赋给变量gc(国产两汉字的首字母)。

7、For x = 1 To UBound(Arr) :在A列原始数据的数组中逐一循环。

8、For i = 0 To UBound(my) :在my数组中逐一循环。因为有4个贸易机品牌,所以用循环每一个与原始数据比较。

9、If InStr(Arr(x, 1), my(i)) > 0 Then :VBA函数Instr返回在第1个参数中查找的位置,如果返回结果=0,表示在第1个参数中没有第2个参数存在。本句的意思是如果找到贸易机品牌的话,执行下面的代码。

10、d1(Arr(x, 1)) = "" :接上句,如果上面判断成立,就把Arr(x, 1)加入字典d。

11、GoTo 100 :Goto语句用于无条件地转移到过程中指定的行。这里采用跳出For i循环,一是为了减少循环的次数,比如"MOTO"找到的话,后面3个就不需要找了;二是为了跳过两个小循环之后的其它品牌加入第3个字典的d2(Arr(x, 1)) = ""语句。

12、For j循环与上面相同,为了判断得到国产机类的字典d1。

13、d2(Arr(x, 1)) = "" :如果上述两个小循环都不满足,那么就加入其它品牌类字典里。

14、Range("c2").Resize(UBound(d.keys) + 1, 1) = Application.Transpose(d.keys) :最后的3句分别把字典的关键字数组转置后赋给相应的单元格区域。

代码执行后如图实例4-1所示。

图 实例4-1  示例

山菊花版主用了一个字典对象就解决了上述问题。让我们来学习一下。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么退出夸克HD账号登录状态? 猫感冒了看兽医要多少钱 Pka 与 PH的区别及各自的应用领域 储干在公司是干什么的职位啊 2025数字博览会 岗位丨申万宏源证券研究所招聘实习生(可留用), 国海证券研究所+开源证 ... 用发酵粉蒸馒头如何蒸? 雷蛇现在的售后保修政策是怎样的有个鼠标双击了 安代驾好还是e代驾好 急需一篇科技小论文,六年级水平的`要快`谢谢啊`! 涂抹浓稠的化妆液或者乳液后,再涂抹面霜就会出现搓泥的现象,是什么原因? 雅诗兰黛眼霜搓泥怎么回事 白天用雅诗兰黛小棕瓶精华怎么会戳球呢 forever+young串词 主持人怎么介绍你曾是少年这首歌? 怎么把我的QQ加到别人建的群里面?(过程) 建了个群,想把老师邀请进来,老师不是我的QQ好友,但是我知道他的qq号,如何邀请加入? 投影仪卷帘的顶部暗装 留多大空间 凸透镜和光程的问题为什么凸透镜成像物体一点发出的 光从一点传到另一点的时候一定要走光程最短的一根线指的是什么原理 等光程原理啊··· 为什么射向凸透镜的所有平行光线都汇聚到焦平面的同一点上 薄透镜不产生光程差到底应该怎么理解? 透镜对光程的影响 等光程原理是什么 透镜光程相等什么意思 3岁的孩子有必要打的肺炎预防针吗 三岁半的宝宝这个年龄段需要打什么样的预防针吗 三岁预防针A+C免费吗??应该打吗? 我儿子3周岁半,为什么还每个月都要打预防针(收费的),有必要吗? excel vba小白求助 数据字典 Not d.exists(username) Excel 如何用数据字典实现多行的值做为item Excel VBA 语句解释 关于批量添加word/excel的自动更正问题 ktv20平方用多少寸音响大概多少钱 怎么样给炒股的人一个高大上的名字 姐妹们都想赚钱,开始炒股,创个群取名叫什么好 文化产业管理专业学什么? 文化产业管理专业考研方向具体包括哪些? 什么是文化产业管理? 文化产业管理专业是干什么的? 文化产业管理的介绍 文化产业管理专业的专业历史 文化产业管理是做什么的 北京电影学院文化产业管理专业 文化产业管理专业前景如何 现在都有什么歌好听啊?真是愁死人..! 最近流行什么歌?哪些歌好听?拜托各位了 3Q 喜欢听什么歌呢? 东风标致召回约9万辆1.2T发动机