专栏名称: 果汁焗酱油
酱油君私人图书馆:定期更新果汁局公益讲座直播地址、课件及视频资源;不定期更新学习笔记,随心情发布酱油君的碎碎念。
目录
相关文章推荐
艾邦高分子  ·  邀请函:3D打印与鞋业应用创新论坛(3月28 ... ·  13 小时前  
艾邦高分子  ·  宝理塑料推出新型环保LFT,重量更轻、刚度更 ... ·  13 小时前  
艾邦高分子  ·  【邀请函】2025可持续环保材料论坛(5月2 ... ·  昨天  
重庆晨报  ·  被曝更衣室有摄像头,医院回应 ·  2 天前  
重庆晨报  ·  被曝更衣室有摄像头,医院回应 ·  2 天前  
高分子科技  ·  浙江大学王立教授/俞豪杰教授团队 ... ·  4 天前  
51好读  ›  专栏  ›  果汁焗酱油

Excel宏VBA小技巧系列 | 大类归纳

果汁焗酱油  · 公众号  ·  · 2020-01-23 11:11

正文

赶在年前,终于即将把关于宏VBA的这几篇小文章分享完了,哈!哈!哈!

在前面两篇文章 ✍名称标引 ✍标引统计 中,我们统计了各个标引词的数量,并且统计了标引词所在的发明创造的奖励总数。
但是,当标引词众多时,统计单个标引词的意义并不大,统计类别才是有效的。 这篇文章,我们按照Sheet3字典中的规则,统计标引词所在的类别,即“火锅类”、 “休闲类”、 “家庭类”、 “技术类”。Sheet3的字典规则如下:

也就是说,我们在上一篇文章中得到以下标引统计,即第H列到第J列。我们继续根据上述字典规则,将第H列的标引词全部归纳到 “火锅类” 、 “休闲类” 等大类中去。

我们对标引词进行统计的思路是: 将Sheet6中第H列标引词顺次在Sheet3的字典中进行检索,当检索到时,将Sheet3中对应的字典大类返回到Sheet6的L列,并将标引词的统计量和奖励系数分别写入到M列和N列。具体分为以下三步:

第一步:
将Sheet6的H列(已经统计出的标引词)按行顺序在Sheet3字典中进行检索。其中,将Sheet6中H列的标引词赋给字符串变量str1,而将Sheet3中的标引词内容赋给字符串变量str2。


For n = 2 To 11
str1 = Sheet6.Cells(n, 8)

For j = 1 To 4
For i = 2 To 5
str2 = Sheet3.Cells(i, j)
*主体程序*
Next
Next

Next

第二步:
设置一个m值,代表大类写入的最后一行。判断是否在Sheet3中找到标引词
(即str1和str2字符串相等) 。如果找到,则将Sheet3中的大类名称赋给Sheet6的第12列 (L列) ,将Sheet6中的统计量和奖励系数分别赋给第13列和第14列,再将代表大类写入的最后一行的m值加一。写作:

If Len(str2) <> 0 And StrComp(str1, str2) = 0 Then
Sheet6.Cells(m, 12) = Sheet3.Cells(1, j)
Sheet6.Cells(m, 13) = Sheet6.Cells(n, 9)
Sheet6.Cells(m, 14) = Sheet6.Cells(n, 10)
m = m + 1
End If

第三步:
设置一个f值,代表大类写入的每一行。每当将一个标引词归纳大类时,先行将这个标引词对应的大类写入最后一行,再判断这一行是否与上面的行有重复,如果不重复则保留;如果重复,则将这最后一行的总统计量、总奖励系数加到上面已有标引词的总统计量和总奖励系数上,随后将最后一行的内容置空,将代表最后一行行数的m值减1。


For f = 1 To m - 2
str3 = Sheet6.Cells(f, 12)
If StrComp(str3, Sheet6.Cells(m - 1, 12)) = 0 Then
Sheet6.Cells(f, 13) = Sheet6.Cells(f, 13) + Sheet6.Cells(m - 1, 13)
Sheet6.Cells(f, 14) = Sheet6.Cells(f, 14) + Sheet6.Cells(m - 1, 14)
Sheet6.Cells(m - 1, 12) = ""
Sheet6.Cells(m - 1, 13) = ""
Sheet6.Cells(m - 1, 14) = ""
m = m - 1
Exit For
End If
Next

完整的程序如下:

最后我们得到的呈现结果如下,据此我们可以进一步操作 (例如排列等) ,从而清楚地得到“火锅类”、“休闲类”、“家庭类”发明创造的奖励系数情况,还可以借助“技术类”了解有多少发明创造涉及了方法和工艺:






请到「今天看啥」查看全文