久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當前位置:首頁>知識>VBA數組與字典解決方案第64講(VBA數組與字典解決方案第64講)

VBA數組與字典解決方案第64講(VBA數組與字典解決方案第64講)

發布時間:2024-01-23閱讀(15)

導讀大家好,今日我們繼續講解VBA數組與字典解決方案,今日講解第64講內容:從字典提取數據后,漢字的筆畫和拼音排序處理.排序的方式,是我在本套書中重點介紹的內容....

大家好,今日我們繼續講解VBA數組與字典解決方案,今日講解第64講內容:從字典提取數據后,漢字的筆畫和拼音排序處理.

排序的方式,是我在本套書中重點介紹的內容,之前的講解中我先后講解了幾種方法,但實際的工作中應用的最為普遍的仍是SORT排序,在這講的內容中我將講解一下當字典回填數據后用此方法進行按拼音和按筆畫排序的兩種方式.

實例的數據如下,在A列中有許多雜亂的數據,我們要利用字典來提出出不重復的數據,并反映每個數據出現的次數,然后回填數據,在回填的過程中按出現的次數進行排序.

VBA數組與字典解決方案第64講(VBA數組與字典解決方案第64講)(1)

思路分析:我們利用字典對數據進行排重處理,如果跟我學到這里,這應該不是難事了,在字典的加載時利用鍵來裝數據,利用鍵值來裝出現的次數,之后回填數據,回填數據時利用先回填鍵的方法,然后根據鍵的數據填鍵值,最后的是排序,把回填區域的數據全選,然后按照出現的次數后數據的性質進行排序,下面看我給出的代碼:

Sub mynzsz_64() 第64講 從字典提取數據后,漢字的筆畫和拼音排序處理

Sheets("64").Select

Set mydic = CreateObject("Scripting.Dictionary") 字典

數據賦值給字典,同時統計出現的次數

For Each ran In Sheets("64").Range("a2:a" & Cells(Rows.Count, 1).End(xlUp).Row)

If ran.Value <> "" Then

If Not mydic.exists(ran.Value) Then

mydic.Add ran.Value, 1

Else

mydic(ran.Value) = mydic(ran.Value) 1

End If

End If

Next

清空區域待回填

[f:e].ClearContents

Sheets("64").Range("e1") = "數據": Sheets("64").Range("f1") = "次數"

回填鍵數據和鍵值數據

Sheets("64").[E2].Resize(mydic.Count) = WorksheetFunction.Transpose(mydic.keys)

For i = 1 To mydic.Count

Cells(i 1, "f") = mydic(Cells(i 1, "e").Value)

Next

在鍵和鍵值區域進行排序處理

rs = ActiveSheet.Range("e1").CurrentRegion.Rows.Count

Set rngs = ActiveSheet.Range(Cells(1, "e"), Cells(rs, "f"))

rngs.Sort key1:=Cells(1, "f"), Order1:=xlDescending, key2:=Cells(1, "e"), _

order2:=xlAscending, Header:=xlYes, SortMethod:=xlStroke 筆畫

rngs.Sort key1:=Cells(1, "f"), Order1:=xlDescending, key2:=Cells(1, "e"), _

order2:=xlAscending, Header:=xlYes, SortMethod:=xlPinYin 拼音

rngs.Sort key1:=Range(Cells(1, "f"), Cells(rs, "f")), Order1:=xlDescending, key2:=Range(Cells(1, "e"), Cells(rs, "e")), _

order2:=xlAscending, Header:=xlYes, SortMethod:=xlPinYin 拼音

End Sub

代碼的截圖:

VBA數組與字典解決方案第64講(VBA數組與字典解決方案第64講)(2)

代碼講解:

1 上述過程實現了: 利用字典mydic對數據進行排重處理,在字典的加載時利用鍵來裝數據,利用鍵值來裝出現的次數,之后回填數據,回填數據時利用先回填鍵的方法,然后在鍵的區域建立循環,根據鍵的數據在字典中提取鍵值,最后的是排序,把回填區域的數據全選,然后按照出現的次數后數據的性質進行排序,這里我給出了三種方案,在下面我會一一講解。

2 For Each ran In Sheets("64").Range("a2:a" & Cells(Rows.Count, 1).End(xlUp).Row)

If ran.Value <> "" Then

If Not mydic.exists(ran.Value) Then

mydic.Add ran.Value, 1

Else

mydic(ran.Value) = mydic(ran.Value) 1

End If

End If

Next

上述代碼實現了將數據裝入字典,利用鍵來裝數據,鍵值對應的是鍵出現的次數

3 回填鍵數據和鍵值數據

Sheets("64").[E2].Resize(mydic.Count) = WorksheetFunction.Transpose(mydic.keys)

上述代碼實現了鍵數據的回填

4 For i = 1 To mydic.Count

Cells(i 1, "f") = mydic(Cells(i 1, "e").Value)

Next

上述代碼實現了鍵值的提取和回填

5 rs = ActiveSheet.Range("e1").CurrentRegion.Rows.Count

Set rngs = ActiveSheet.Range(Cells(1, "e"), Cells(rs, "f"))

設定排序區域。

6 rngs.Sort key1:=Cells(1, "f"), Order1:=xlDescending, key2:=Cells(1, "e"), _

order2:=xlAscending, Header:=xlYes, SortMethod:=xlStroke 筆畫

上述代碼是實現按筆畫排序

7 rngs.Sort key1:=Cells(1, "f"), Order1:=xlDescending, key2:=Cells(1, "e"), _

order2:=xlAscending, Header:=xlYes, SortMethod:=xlPinYin 拼音

上述代碼實現了按拼音排序。

8 rngs.Sort key1:=Range(Cells(1, "f"), Cells(rs, "f")), Order1:=xlDescending, key2:=Range(Cells(1, "e"), Cells(rs, "e")), _

order2:=xlAscending, Header:=xlYes, SortMethod:=xlPinYin 拼音

排序的另外一種寫法。

9 Range對象的Sort方法可對值區域進行排序。其語法格式如下:

表達式: .Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)

該方法有很多參數,這些參數都可省略。各參數的含義如下:

① Key1:指定第一排序字段,作為區域名稱(字符串)或Range對象;確定要排序的值。

② Order1:確定Key1中指定的值的排序次序,可設置為常量xlAscending(升序)或xlDescending(降序)。

③ Key2:第二排序字段。

④ Type:指定要排序的元素。

⑤ Order2:確定Key2中指定的值的排序次序。

⑥ Key3:第三排序字段。

⑦ Order3:確定Key3中指定的值的排序次序。

⑧ Header:指定第一行是否包含標題信息。

⑨ OrderCustom:指定在自定義排序次序列表中的基于1的整數偏移。

⑩ MatchCase:設置為True,則執行區分大小寫的排序,設置為False,則執行不區分大小寫的排序;不能用于數據透視表。

? Orientation:指定以升序還是降序排序。可用常量xlSortColumns(按列排序)或xlSortRows(按行排序,這是默認值)。

? SortMethod:指定排序方法。可用常量xlPinYin(按漢語拼音順序排序,這是默認值)或xlStroke(按每個字符的筆畫數排序)。

? DataOption1:指定Key1中所指定區域中的文本的排序方式,可使用常量xlSortNormal(分別對數字和文本數據進行排序,這是默認值)或xlSortTextAsNumbers(將文本作為數字型數據進行排序)。

? DataOption2:指定Key2中所指定區域中的文本的排序方式。

? DataOption3:指定Key3中所指定區域中的文本的排序方式。

? 使用Sort方法排序時,最多只能按3個關鍵字進行排序。

下面看代碼的運行:

VBA數組與字典解決方案第64講(VBA數組與字典解決方案第64講)(3)

今日內容回向:

1 如何實現按拼音的排序?

2 如何實現按筆畫的排序?

歡迎分享轉載→http://www.avcorse.com/read-83215.html

Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖