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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ios 数组中的字典排序_利用数组和字典,实现按指定规则的排序

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios 数组中的字典排序_利用数组和字典,实现按指定规则的排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,今日我們繼續講解數組與字典解決方案,今日講解第47講:利用字典和數組,實現按指定規則的排序。隨著字典講解的深入,我們發現字典真的很神奇,在VBA代碼中,給人以十分清爽的感覺,在這套數組與字典解決方案中,我會盡可能的把經常用到的實例多多講解給大家,讓大家對于字典的理解更加深入.雖然這塊內容利用其它方案都可以實現,但是字典確實能大大簡化我們的代碼.讓我們對于VBA的理解更深入.

今日實例是實現按指定規則的排序,為什么會有這個課題呢?對于職場中的我們經常會用到數據分析,往往數據來源不一致,同樣項目,由于來源不同,往往排序的方式不同,而且有時候要求提交數據的排序并不是EXCEL自帶功能可以解決的,這個時候怎么辦?我們依然可以用字典來幫助解決,我們看下面的數據:

大家注意到,在A,B列中,給出了排序的規則,在D,E,F列中是提供的報表數據,但這個數據報表的排序不符合A,B列的排序規則,我們要實現的是把報表數據按照固定的規則來排序,如何做到呢?下面看我給出的代碼:

Sub mynzsz_47() '第47講 利用數組和字典,實現按指定規則的排序

Sheets("47").Select

Dim mybrr()

'建立字典

Set myDic = CreateObject("Scripting.Dictionary")

'把數據裝入數組

myarr = Range("a2:f" & [a65536].End(xlUp).Row)

'動態數組的再分配

ReDim mybrr(1 To UBound(myarr), 1 To 4)

'字典的賦值,也是排序規則的建立

For i = 1 To UBound(myarr)

myDic(CStr(myarr(i, 1))) = i

Next i

'給定數據的排序,其實是把給定的數據,按照字典建立的規則放到另外一個數組中

For i = 2 To Cells(65536, 4).End(xlUp).Row

If myDic(CStr(myarr(i - 1, 4))) <> "" Then

mybrr(myDic(CStr(myarr(i - 1, 4))), 1) = myarr(i - 1, 4)

mybrr(myDic(CStr(myarr(i - 1, 4))), 2) = myarr(i - 1, 5)

mybrr(myDic(CStr(myarr(i - 1, 4))), 3) = myarr(i - 1, 6)

End If

Next i

'數據的回填

[d2].Resize(UBound(mybrr), 3) = mybrr

End Sub

代碼的截圖:

代碼講解:

1 上述代碼實現了數據按指定規則排序,只要給定規則,就可以實現數據的自定義排序。

2 '把數據裝入數組

myarr = Range("a2:f" & [a65536].End(xlUp).Row)

上述代碼將數據放到數組中,在實際應用中,也可以將規則數據和報表數據分別放在不同的數組中。

3 '動態數組的再分配

ReDim mybrr(1 To UBound(myarr), 1 To 4)

這個動態數組是用來裝排序完成的數據的。

4 '字典的賦值,也是排序規則的建立

For i = 1 To UBound(myarr)

myDic(CStr(myarr(i, 1))) = i

Next i

大家要注意這幾行代碼即給字典賦值同時又用鍵值定義了排序的規則,大家可以理解一下。

5 '給定數據的排序,其實是把給定的數據,按照字典建立的規則放到另外一個數組中

For i = 2 To Cells(65536, 4).End(xlUp).Row

If myDic(CStr(myarr(i - 1, 4))) <> "" Then

mybrr(myDic(CStr(myarr(i - 1, 4))), 1) = myarr(i - 1, 4)

mybrr(myDic(CStr(myarr(i - 1, 4))), 2) = myarr(i - 1, 5)

mybrr(myDic(CStr(myarr(i - 1, 4))), 3) = myarr(i - 1, 6)

End If

Next i

在上述代碼中,首先在字典中查找報表數據在字典中是否存在,如果存在,那么就存放到存放排序結果的數組中,但是放在結果數組中的時候,存放順序是鍵值給出的順序。

6 '數據的回填

[d2].Resize(UBound(mybrr), 3) = mybrr

將排序的結果回填到數據區域.

下面看代碼的運行結果:

今日內容回向:

1 如何實現報表數據按指定規則的排序?

2 myDic(CStr(myarr(i, 1))) = I 的意義是什么?

總結

以上是生活随笔為你收集整理的ios 数组中的字典排序_利用数组和字典,实现按指定规则的排序的全部內容,希望文章能夠幫你解決所遇到的問題。

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