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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

c# 字典按ascii 排序_利用工作表函数,对字典键进行排序并给出对应重复个数

發布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c# 字典按ascii 排序_利用工作表函数,对字典键进行排序并给出对应重复个数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,今日我們繼續講解VBA數組與字典解決方案,今日的內容是第58講,利用工作表函數,對字典的鍵進行排序,并給出對應的重復個數。

對于排序,大家并不陌生,在之前的講解中,我也講了利用sort進行排序的方法。今日我們講解利用工作表函數對數值排序.對于工作函數,我這講利用了LARGE,還可以使用SMALL.都是可以的,這類函數在實際的應用中也十分方便。

實例,我們看下面的數據,在A列中有若干多的數據,我們要對這些數值進行排序,并將重復的次數記錄。

思路分析:我們要先將數據放到字典中,放的同時利用鍵值進行累計出現重復的次數,然后取出鍵和鍵值放到對應的數組中,同時再建立一個數組用于存放排序的結果,然后在數組中提取數值,提取的時候是按照從大到小順序進行。并將結果放到數組中,最后回填數據。下面看我給出的代碼:

Sub mynzsz_58() '第58講 利用工作表函數,對字典的鍵進行排序,并給出對應的重復個數

Dim ran

Sheets("58").Select

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

'將數據放入字典中,并計數

For Each ran In Sheets("58").Range("a2:a" & Range("a2").End(xlDown).Row)

If ran.Value <> "" Then

If Not mydic.exists(ran.Value) Then

mydic.Add ran.Value, 1 '初始值為1

Else

mydic(ran.Value) = mydic(ran.Value) + 1 '重復時累加

End If

End If

Next

'將字典的鍵和鍵值,取出,放到數組中

k = mydic.keys: T = mydic.items

'新建一個數組,用于放排序的結果

ReDim X(1 To mydic.Count, 1 To 2)

For i = 1 To mydic.Count

X(i, 1) = Application.Large(k, i) '按最大值的先后將數據放到數組中

X(i, 2) = mydic(X(i, 1)) '提取相應的鍵值

Next

[e:f].Clear

[e1] = "排序": [f1] = "重復次數"

Sheets("58").[e2].Resize(mydic.Count, 2) = X

Set mydic = Nothing

End Sub

代碼截圖:

代碼講解:

1 上述代碼實現將數據放到字典mydic中,放的同時利用鍵值進行累計出現重復的次數,然后取出鍵和鍵值放到對應的數組k,t中備用,同時再建立一個數組x用于存放排序的結果,然后在數組k中提取數值,提取是按照從大到小的順序進行。并將結果放到數組x中,最后回填數據。

2 For Each ran In Sheets("58").Range("a2:a" & Range("a2").End(xlDown).Row)

If ran.Value <> "" Then

If Not mydic.exists(ran.Value) Then

mydic.Add ran.Value, 1 '初始值為1

Else

mydic(ran.Value) = mydic(ran.Value) + 1 '重復時累加

End If

End If

Next

上述代碼在將數據放到字典中,注意這里有一個是否重復的判定:Not mydic.exists(ran.Value)

3 '將字典的鍵和鍵值,取出,放到數組中

k = mydic.keys: T = mydic.items

此處要注意的是k 和 t 的含義,是一個一維數組,之后的代碼要在k中建立一個循環提取數值。

4 For i = 1 To mydic.Count

X(i, 1) = Application.Large(k, i) '按最大值的先后將數據放到數組中

X(i, 2) = mydic(X(i, 1)) '提取相應的鍵值

Next

上述代碼按照i值在k中提取數據,i是從小到大排序的,所以LARGE函數會相應出現從大到小的排序,Application.Large(k, i),要注意這個工作表函數的用法. 將mydic(X(i, 1)) 提取相應的鍵值放到X(i, 2)中

5 Sheets("58").[e2].Resize(mydic.Count, 2) = X

上述代碼回填數據

下面看代碼的運行:

今日內容回向:

1 如何實現鍵的排序?

2 利用上述工作表函數如何實現從小到大的排序?

#2019生機大會#

總結

以上是生活随笔為你收集整理的c# 字典按ascii 排序_利用工作表函数,对字典键进行排序并给出对应重复个数的全部內容,希望文章能夠幫你解決所遇到的問題。

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