日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

检查一列数据的重复项 vba_提取重复值,但字典不是重点。

發布時間:2023/12/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 检查一列数据的重复项 vba_提取重复值,但字典不是重点。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本例的問題描述:

1:源數據與提取的結果在同一個工作表里面;

2:提取K、M、O、Q列里面不重復的數據(注意,數據列里面有空白的行);

3:把提取出來的結果放在A2單元格的下方,不能有空白行;

源數據及目標結果如下:

解決的思路詳解:

1:由于K、M、O、Q四列不連續,且中間還有數據(在截圖的時候,中間的數據刪除了,實際運用的時候,是有數據的)還有空白的單元格出現。所以arr = sht.Range("a1").CurrentRegion這種方法就不適用了;

2:獲取一列的最后一個非空單元行,再用Range“K1:K100”)類似這樣的方式來獲取列的區域了;

3:由于四列的不連續,所以循環需要一點小的技巧,詳見后續的代碼;

4:提取不重復的值,相信看過之前的文章都知道,要用到字典了;

代碼運行的結果如下:

代碼如下:

Sub test()

Dim arr, col, i, j, dic

Set dic = CreateObject("scripting.dictionary")

col = Split("K m o q")

For i = 0 To UBound(col)

arr = Range(col(i) & "1").Resize(Cells(Rows.Count, col(i)).End(xlUp).Row)

For j = 3 To UBound(arr, 1)

If Len(arr(j, 1)) Then dic(arr(j, 1)) = j

Next j, i

[a2].Resize(dic.Count).ClearContents

[a2].Resize(dic.Count) = Application.Transpose(dic.keys)

End Sub

代碼解析

1:2行 定義變量;

2:3行 后期綁定字典;

3:4行 把四列不連續的只放入col數組;

4:5~6行 遍歷col數組,獲取最后一列的非空單元格之后,與第一列的區域,賦值給arr數組;

5:7行 遍歷arr數組;

6:8行 用len判斷單元格的類容是否為非空,把不是空的單元格放入字典d;

7:10行 清除指定區域的內容;

8:11行 把結果賦值給指定的區域;

本例思考:

1:本例思維兩點,是把不連續的列數據,用循環來提取。

小結:

解決本問題,需要用的知識點:

1:字典的經典運用;

2:split函數

延伸閱讀:

Excel VBA 數組公式Split 和Join

Excel VBA 字典的常用方式

Excel VBA 字典入門key和item

Excel VBA 按照要求提取數據,數據及字典法

點擊關注可以更方便的查看Excel VBA的案例文章

私信 視頻 可以獲取54集VBA入門視頻

私信 VBA或 vba 可以獲取文章中含VBA代碼的Excle文件

總結

以上是生活随笔為你收集整理的检查一列数据的重复项 vba_提取重复值,但字典不是重点。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。