站長資訊網
        最全最豐富的資訊網站

        excel重復出現次數 可以求出Excel中重復姓名及重復的次數的VBA代碼

        excel重復出現次數 可以求出Excel中重復姓名及重復的次數的VBA代碼,對于很多高手來說這個可能并不是一個問題,但是對于很多菜鳥來說關于excel重復出現次數這個問題還是有點難度的,但是今天這篇excel重復出現次數 可以求出Excel中重復姓名及重復的次數的VBA代碼的文章就是幫助菜鳥們解決這些問題的,菜鳥們趕快來圍觀吧!

        假如,表格中的人物的姓名,有很多是重復的,而問題的需求是:要求編寫一段代碼,把重復的人的姓名以及重復的次數求出來,復制到另一個表格中。

        我們可通過如下的VBA代碼來實現。

        Sub CountCFZ()

        Dim i&, Myr&, Arr

        Dim d, k, t

        Set d = CreateObject("Scripting.Dictionary")

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

        Arr = Sheet1.Range("a1:g" & Myr)

        For i = 2 To UBound(Arr)

        d(Arr(i, 3)) = d(Arr(i, 3)) + 1

        Next

        k = d.keys

        t = d.items

        Sheet2.Activate

        [a2].Resize(d.Count, 1) = Application.Transpose(k)

        [b2].Resize(d.Count, 1) = Application.Transpose(t)

        [a1].Resize(1, 2) = Array("重復的姓名", "重復的次數")

        Set d = Nothing

        End Sub

        部分代碼的解釋如下:

        1、Dim i&, Myr&, Arr :變量i和Myr聲明為長整型變量。 也可以寫為 Dim Myr As Long 。Long 的類型聲明字符為(&)。Arr后面沒有寫明數據類型,默認就是可變型數據類型(Variant)。

        2、Set d = CreateObject("Scripting.Dictionary"):創建字典對象,并把字典對象賦給變量d。這是最常用的一句代碼。所謂的“后期綁定”。用了這句代碼就不用先引用c:windowssystem32scrrun.dll了。

        3、Myr = Sheet1.[a65536].End(xlUp).Row :把表1的A列最后一行不為空白的行數賦給變量Myr。這里用了Range對象的End屬性,它有4個方向參數,此處的xlUp表示向上,它的值為3,所以也可寫成End(3)。xlDown表示向下,它的值為4;xlToLeft表示向左,它的值為1;xlToRight表示向右,它的值為2。

        4、Arr = Sheet1.Range("a1:g" & Myr):把表1的A1到G列最后一行不為空白的 單元格區域的值賦給變量Arr。這樣Arr就是個二維數組了,用數組替代單元格引用可對執行代碼的速度提高很多很多。

        5、For i = 2 To UBound(Arr) :For…Next循環結構,從2開始到數組的最大上界值之間循環。因為數組的第一行是表頭。Ubound是VBA函數,返回數組的指定維數的最大可用上界。

        6、d(Arr(i, 3)) = d(Arr(i, 3)) + 1 :Arr(i,3)在本例是姓名列,也就是關鍵字列,舉個例子,假如Arr(i,3)=”青山”,這句代碼的意思就是把關鍵字”青山”加入字典,d(key)等于關鍵字key對應的項,每出現一次這個關鍵字,它的項的值就增加1。起到了按關鍵字累加的作用,也正因為有這個作用,所以可使用字典來進行各種匯總統計。后面要講的實例會充分的展現這個作用。

        7、k=d.keys :把字典d中存在的所有的關鍵字賦給變量k。得到的是一個一維數組,下限為0,上限為d.Count-1。Keys是字典的方法,前面已經講過了。

        8、t=d.items :把字典d中存在的所有的關鍵字對應的項賦給變量t。得到的也是一個一維數組,下限為0,上限為d.Count-1。Items也是字典的方法,前面也已經講過了。

        9、Sheet2.Activate :激活表2。

        10、[a2].Resize(d.Count, 1) = Application.Transpose(k) :把字典d中所有的關鍵字賦給以a2單元格開始的單元格區域中。詳細的解釋請見前面的keys方法一節。

        11、[b2].Resize(d.Count, 1) = Application.Transpose(t) :把字典d中所有的關鍵字對應的項賦給以b2單元格開始的單元格區域中。

        12、[a1].Resize(1, 2) = Array("姓名", "重復個數") :Array是一個VBA函數,返回一個下界為0的一維數組。一維數組是水平排列的,所以賦值給水平的單元格區域不需要用轉置函數了。這里作為表頭一次性輸入。

        13、Set d = Nothing :釋放字典內存。求出Excel中不重復的人的姓名的VBA代碼

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲国产主播精品极品网红| 无码国内精品久久人妻蜜桃| 日韩精品一区二区午夜成人版| 精品人无码一区二区三区| 精品国产福利盛宴在线观看| 久久91精品久久91综合| 熟女精品视频一区二区三区| 欧美精品人人做人人爱视频| 91久久精品电影| 国产91精品一区二区麻豆网站| 久久国产免费观看精品| 亚洲精品无码成人AAA片| 久久精品亚洲欧美日韩久久| 91精品一区二区综合在线| 国产国产成人精品久久| 久久精品中文字幕无码绿巨人| 久久99国产精品99久久 | 国产成人精品一区二区三区免费| 夜夜高潮夜夜爽国产伦精品| 欧美精品一区二区三区免费观看| 国产精品 猎奇 另类视频| 欧美精品国产日韩综合在线| 国产精品夜色一区二区三区 | 亚洲国产精品国自产拍AV| 日韩在线精品一二三区| 久久久久人妻一区精品果冻| 国产精品欧美久久久久无广告| 91精品国产福利在线观看| 亚洲国产精品自在线一区二区| 久久91精品国产91久久小草| 久久国产乱子伦精品免费强| 久久精品视频网| 亚洲午夜精品久久久久久人妖| 2020亚洲男人天堂精品| 99久久免费国产精品热| 国产精品国产三级国产专播| 国产偷亚洲偷欧美偷精品| 国产精品一久久香蕉产线看| 日本人精品video黑人| 一区二区三区四区精品视频| 88国产精品无码一区二区三区|