您現在的位置是:首頁 > 籃球

列出最多和最少姓名和對應銷售額,教你10秒搞定

  • 由 Excel教案 發表于 籃球
  • 2022-06-28
簡介Transpose(brr)End WithSet d = NothingEnd Sub程式碼例項2:Sub 提取最多與最少的()Dim Cn, Rs, sql$Set Cn = CreateObject(“A

少在姓名裡讀幾聲

每週,本號每天都會送出兩本書,本本不重樣!

資料分析、少兒程式設計、Excel、PPT、Photoshop···總有一款是你的心頭好! 現在說說送書的規則: 後臺轉發分享+閱讀前1名都可以免費送一本哦;

請大家盡情參與,謝謝支援!

今天與大家分享如何用vba字典方法列出銷售額最多和最少的銷售員姓名和對應金額,讓你1分鐘之內學會他,從此不再糾結。

也許有某些同學在學習vba字典,可以學習一下,相信經學習後,您的字典應用會更上一層樓。

Step-01,源資料如下,資料區域在A、B列;

列出最多和最少姓名和對應銷售額,教你10秒搞定

Step-02 如何用vba字典方法列出銷售額最多和最少的銷售員姓名和對應金額,填在D2:F8區域。 類別列填最多或最少?

問題分析:其實這個問題是字典入門問題,

這個應該可以用“站講臺”的方法,放兩個講臺A(放最小的那個key) 講臺B(大的那個Key): 講臺A和講臺B的值 先賦予字典裡面第一項的值,然後迴圈一遍一一作比較,把比講臺A留下較小的那個,講臺B留下較大 的那個即可 。

Step-03,那麼應該如何寫程式碼呢?給大家舉例3種寫程式碼的方式,思路其實差不多;

得到最終的結果如下所示:

列出最多和最少姓名和對應銷售額,教你10秒搞定

程式碼例項1:

Sub 提取最多與最少的() Dim r%, i%, m Dim arr, brr() Dim d As Object Set d = CreateObject(“scripting。dictionary”) With Worksheets(“sheet1”) r = 。Cells(。Rows。Count, 1)。End(xlUp)。Row arr = 。Range(“a2:b” & r) For i = 1 To UBound(arr) d(arr(i, 1)) = d(arr(i, 1)) + arr(i, 2) Next For i = 0 To d。Count - 1 If d。items()(i) = Application。Large(d。items(), 1) Then m = m + 1 ReDim Preserve brr(1 To 3, 1 To m) brr(1, m) = “最多” brr(2, m) = d。keys()(i) brr(3, m) = d。items()(i) End If Next For i = 0 To d。Count - 1 If d。items()(i) = Application。Small(d。items(), 1) Then m = m + 1 ReDim Preserve brr(1 To 3, 1 To m) brr(1, m) = “最少” brr(2, m) = d。keys()(i) brr(3, m) = d。items()(i) End If Next 。Range(“d2”)。Resize(m, 3) = Application。Transpose(brr) End With Set d = NothingEnd Sub

程式碼例項2:

Sub 提取最多與最少的() Dim Cn, Rs, sql$ Set Cn = CreateObject(“ADODB。Connection”) Cn。Open “Provider=Microsoft。ACE。OLEDB。12。0;Extended Properties=Excel 12。0;Data Source=” & ThisWorkbook。FullName sql = “SELECT ‘最多’ AS 類別銷售員金額 FROM [Sheet1$a1:b] WHERE 金額=(SELECT MAX(金額) FROM [Sheet1$a1:b])” Set Rs = Cn。Execute(sql) [d2]。CopyFromRecordset Rs sql = “SELECT ‘最少’ AS 類別銷售員金額 FROM [Sheet1$a1:b] WHERE 金額=(SELECT MIN(金額) FROM [Sheet1$a1:b])” Set Rs = Cn。Execute(sql) Cells([d65536]。End(3)。Row + 1, 4)。CopyFromRecordset RsEnd Sub

程式碼例項3:

Sub 提取最多與最少的()Dim d As Object, r As Range, key, x, y, i%Set d = CreateObject(“Scripting。Dictionary”)For Each r In [A2:A8]。CellsIf Not d。exists(r) Then d。Add r, r。Offset(, 1)Nextx = WorksheetFunction。Max(WorksheetFunction。Transpose(d。items))y = WorksheetFunction。Min(WorksheetFunction。Transpose(d。items))For Each key In d。keys If d(key) = x Then [E1]。Offset(i + 1) = key: [F1]。Offset(i + 1) = x i = i + 1 ElseIf d(key) = y Then [E1]。Offset(i + 1) = key: [F1]。Offset(i + 1) = y i = i + 1 End IfNextEnd Sub

不知大家更喜歡哪種程式碼實現方式,如果對VBA有興趣的可以加群一起學習,可以拿到VBA程式碼編輯器(包含VBA智慧排版外掛),支援資料庫雲同步和自定義程式碼顏色

程式碼編輯器程式功能:

1、VBA程式碼編輯功能支援

程式碼雙向傳遞到VBE、變數及屬性智慧提示、程式碼高亮摺疊、自動排版格式化、錄入提示、函式列表、自動補全、無限Undo/Redo、括號匹配等

2、提供程式碼庫的管理功能(搜尋、增刪查改、拖拽排序等)

排版外掛程式功能:

1、提供VBA程式碼縮排美化,統計。

2、工程密碼解密。

3、API語句64位和32位轉換。

4、VBA

程式碼傳送到VBA程式碼編輯器

視窗等功能。

5、支援32位和64位office、AutoCAD、WPS、CorelDRAW、Solidworks等軟體,支援三種語言。

列出最多和最少姓名和對應銷售額,教你10秒搞定

列出最多和最少姓名和對應銷售額,教你10秒搞定

Step-04,如需要原始檔的,可以私信我“VBA字典入門”,即可自動獲得原始檔,或者加我好友;

從無到有、從入門到實戰。。。系統學習技巧、函式、透視表、VBA程式設計

Power Query基礎入門、SQL in Excel等兼具答疑+海量圖文/影片教程。。。

學習內容全目錄: 透視表、函式、VBA、PQ、SQL…

本號堅持一個理念——幫助讀者正確使用Excel,這個正確使用不僅指用Excel進行資料記錄、統計、分析、視覺化輸出的過程規範和專業,還指資料分析的過程更加高效,特別是節省資料清洗的時間。

“用資料說話”的水平是衡量職場人士能力的維度之一。 讓我們一起學好、用好Excel,減少加班,一起走上人生的巔峰。

Top