vba 提取 json某个值_Excel中提取不重复值的方法汇总(5种基础+VBA+1个自定义函数)...
各位朋友,你們好,
今天和你們分享Excel中提取不重復值的幾種方法,著重介紹【5種】基礎操作方法,另外附送一個VBA去重代碼,拿去就可以直接使用。
一、基礎操作方法
1、數據工具直接去重(見下圖)
數據工具去重
2、高級篩選(見下圖)
高級篩選去重
3、數據透視表(見下圖)
數據透視表方法去重
4、條件格式(見下圖)
條件格式去重
注:
①條件格式去重的公式:=AND($A1<>"",COUNTIF($A$1:$A1,$A1)>1)
②設置的單元格格式為【;;;】,這個表示什么意思,可以查看我之前的文章;
③這種方式,并不是真正意義的去重,只是將重復的內容不顯示出來;
點擊鏈接,帶你認識【;;;】
5、使用數據表的設計模式(見下圖)
數據表的設計模式數據去重
二、VBA方法(下面的代碼可直接拿去用)
VBA去重
VBA去重,最常用的方法就是數組+字典,本例使用的代碼如下:
Sub 數據去重() Dim Arr, Brr, a%, b%, Str1, Str2 Dim Dic As Object Set Dic = CreateObject("scripting.dictionary") Set Str1 = Application.InputBox("請選擇要去重的數據區域", "選擇數據", , , , , , 8) Arr = Range(Str1.Address) If Not IsArray(Arr) Then Exit Sub '如果不存在數據源選項,則arr非數組,那么退出程序 For a = 1 To UBound(Arr, 1) For b = 1 To UBound(Arr, 2) If Arr(a, b) <> "" Then Dic(Arr(a, b)) = "" '單元格非空,則裝入字典 Next Next Brr = Dic.keys Set Str2 = Application.InputBox("請確定數據存放的單元格", "選擇數據存放的單元格", , , , , , 8) Range(Str2.Address).Resize(Dic.Count, 1) = Application.Transpose(Brr) Set Dic = Nothing '釋放字典內存End Sub此代碼做了靈活設置處理,支持自己選擇區域,而并非只能對固定區域內容去重,有需要的朋友可以直接拿去使用。
三、函數公式去重
1、公式組合套路
用公式對數據去重,效率不是很高,且遇到數據量很大的時候,文件的運行會卡頓。但是既然說到去重,還是應該介紹下公式去重的套路(效果見下圖)。
公式去重
下面是去重公式的套路組合,拿去就可以直接套用:
=INDIRECT("A"&SMALL(IF(MATCH(數據區域,數據區域,)=ROW($1:$16),ROW($1:$16),4^6),ROW(A1)))&""
套路解析:
①【A】表示數據所在的列;
②【數據區域】:需要去重的數據,需要絕對引用;
③【ROW($1:$16)】:這里的16表示數據區域的高度,要根據實際情況調整;
④公式是數組公式,需要按組合鍵【Ctrl+Shift+Enter】結束。
當然,此處也可以用OFFSET函數或者INDEX函數,根據自己的情況合理選擇即可。
2、高版本專有函數
如果你是Office 365的用戶,還有一個更方便的函數【UNIQUE 函數】
UNIQUE 函數去重
3、自定義函數
如果是低版本的用戶,不想用復雜的套路組合,又要實現不重復數據的實時更新,就只能使用自定義函數了。效果見下圖:
自定義函數去重
自定義函數的代碼如下:
Function QuChong(Rng As Range, Optional i As Integer, Optional Str As String = ",")'函數作用:去除重復項'函數名:QuChong。此函數有三個參數:Rng、i、Str'Rng:需要去重的數據區域'i(可忽略):去重選項,如果i=0,則去重后合并;如果i>0,則依次提取出內容'Str(可忽略):用于當i=0時,合并用的連接符。Dim Arr,Brr, a%, b%Dim DicSet Dic = CreateObject("scripting.dictionary")If Rng.Count = 0 Then QuChong = ""Arr = RngFor a = 1 To UBound(Arr, 1) For b = 1 To UBound(Arr, 2) If Arr(a, b) <> "" Then Dic(Arr(a, b)) = "" '單元格非空,則裝入字典 End If NextNextBrr = Dic.keysIf i = 0 Then QuChong = VBA.Join(Dic.keys, Str)ElseIf i > 0 Then If i <= Dic.Count Then QuChong = Brr(i - 1) Else QuChong = "" End IfElse QuChong = "參數錯誤"End IfEnd Function函數作用:去除重復項;
函數名:QuChong。此函數有三個參數:Rng、i、Str;
Rng:需要去重的數據區域;
i(可忽略,忽略是默認為0):去重選項,如果i=0,則去重后合并;如果i>0,則依次提取出不重復內容;
Str(可忽略,忽略時默認為逗號):用于當i=0時,合并用的連接符。
我是上班下班,因為愛好辦公軟件、喜歡分享。所以來到這里將我的學習心得和踩過的一些坑,和大家聊聊,希望大家學習我成功的經驗,避開我踩過的坑。我和你們一起進步。
好了,今天就聊到這里,感謝各位朋友的關注和支持。
如果你喜歡我分享的內容,請點個贊支持下;
如果你覺得我分享的內容對你有幫助,可以關注我;
如果要看我以前分享過的好玩的內容,大家可以去我的主頁查看歷史文章。
總結
以上是生活随笔為你收集整理的vba 提取 json某个值_Excel中提取不重复值的方法汇总(5种基础+VBA+1个自定义函数)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哈啰顺风车:全年完单1.5亿次,四年累计
- 下一篇: tomcat temp 大量 uploa