循环单元格并获取所有表单中string值的计数,并将计数序列打印在相应表单的另一列中
我坚持一个问题在Excel中,也是新的VBAmacros。 我有一个excel文件中的4张(sheet 1,sheet 2,sheet 3,sheet 4),它由所有表格中的相同的两列组成。 列“人名”和“序列计数”我的工作表是这样的:
表1 人名| 序列号 约翰 约翰 约翰 马修 王子 拉吉 拉吉 鲸
工作表2 人名| 序列号 约翰 约翰 马修 马修 王子 王子 拉吉 拉吉 拉吉 鲸 鲸
表3 人名| 序列号 约翰 约翰 约翰 约翰 马修 王子 沙 拉吉 拉吉 拉吉 鲸
现在运行所需的macros后,我需要这种格式的输出
表1 人名| 序列号 约翰1 约翰2 约翰3 马修1 王子1 拉吉1 拉吉2 鲸1
工作表2 人名| 序列号 约翰4 约翰5 马修2 马修3 王子2 王子3 拉杰3 拉吉4 拉杰5 鲸鱼2 鲸鱼3
表3 人名| 序列号 约翰6 约翰7 约翰8 约翰9 马修4 王子4 桑迪1 拉吉6 拉吉7 拉杰8 鲸鱼4
我的意思是说,在表1中,名为“约翰”的值有4个计数,所以它被打印在序号1,2,3,4和表2中,相同的值“约翰”再次出现2次,所以在序列号列中,计数从表1(5,6)继续。 当数值在序列号列中变为“Mathew”时,它已经分配了计数(1)表1,在表2中为特殊值“Mathew”计数从表1开始增加并且被打印,现在,这应该适用于所有的值。
请帮助我,因为数据是巨大的,不可能手动操作。 请告诉我在macros中的方式。 提前致谢。
放入以下代码并添加对“Microsoft脚本运行时”(工具>参考)的引用,以便可以使用字典结构
Sub CountOccurence() ' Reference: Microsoft Scripting Runtime Application.ScreenUpdating = False Set oDict = New Dictionary Dim Shts() As Variant Dim wS As Worksheet Dim r As Integer, rLast As Integer Dim i As Integer Shts = Array("Sheet1", "Sheet2", "Sheet3", "Sheet4") For i = 0 To 3 Step 1 Set wS = Sheets(Shts(i)) rLast = wS.Cells(1, 1).CurrentRegion.Rows.Count For r = 2 To rLast Step 1 If Not (oDict.Exists(wS.Cells(r, 1).Value)) Then oDict.Add wS.Cells(r, 1).Value, 1 Else oDict.Item(wS.Cells(r, 1).Value) = oDict.Item(wS.Cells(r, 1).Value) + 1 End If wS.Cells(r, 2).Value = oDict.Item(wS.Cells(r, 1).Value) Next r Next i Set oDict = Nothing Application.ScreenUpdating = True End Sub