標題:
[發問]
請教如何用VBA找出最大值、第二大值…… 萬分感謝…
[打印本頁]
作者:
ji12345678
時間:
2013-6-16 17:18
標題:
請教如何用VBA找出最大值、第二大值…… 萬分感謝…
(1)請教如何用VBA寫出一個程式,功能為
列出數量最多、數量第2多…到數量第5多 (前5多) 排列出來。
且填入相對的位置。
(2)而當數量相同時,可以先列出先出現的品名,亦可依品名排序;
先出現的先列出來。
謝謝指教,萬分感謝…........... 。:'(
[attach]15251[/attach]
[attach]15252[/attach]
作者:
GBKEE
時間:
2013-6-19 18:31
回復
1#
ji12345678
使用 Sort 方法 [排序]
Option Explicit
Sub Ex()
Dim E As Range, Sh As Worksheet
Set Sh = Sheets("Sheet1") '設定變數 : 資料所在的工作表
Application.ScreenUpdating = False '停止 : 銀幕的更新
With Sheets.Add '新增一工作表
Sh.[A:B].Copy '資料複製
.[A1].PasteSpecial Paste:=xlPasteValues '選擇性貼上 : 僅貼上值
.[C1] = "位置"
For Each E In .Range(.[C2], .[B2].End(xlDown).Offset(, 1)) 'C欗的範圍
E = E.Offset(, -1).Address(0, 0) '寫上B欄的位置
Next
With .Range("A1").CurrentRegion '[A1].的延伸範圍
.Sort Key1:=.Range("B2"), Order1:=xlDescending, Header:=xlYes '排序 : xlDescending (遞減: 由大到小), xlAscending (遞增: 由小到大)
'.Sort Key1:=.Range("B2"), Order1:=xlDescending, Key2:=.Range("A2"), Order2:= xlDescending , Header:=xlYes
'第1排序 : 數量, 第2排序: 品名
.Rows(1).Resize(6).Copy Sh.[G2] '複製:[A1].的延伸範圍:的6列擴充 到 資料所在工作表的[G2]
End With
Application.DisplayAlerts = False '停止:系統的提醒
.Delete '刪除:新增的工作表
Application.DisplayAlerts = True '恢復:系統的提醒
End With
Application.ScreenUpdating = True '恢復:銀幕的更新
End Sub
複製代碼
作者:
c_c_lai
時間:
2013-6-20 07:57
回復
2#
GBKEE
此處 Sheets.Add 的佈局用得實在非常巧妙,
既可達到目的,又可提供做為額外的暫存作業區,
多謝 GBKEE 版大的賜教。
作者:
wanney1111111
時間:
2013-9-23 00:33
本帖最後由 wanney1111111 於 2013-9-23 00:35 編輯
回復
2#
GBKEE
請問一下,那如果我跟版主的問題類似,但是我是要做橫列的排序,搞了很久還是搞不出來,麻煩大師您了..
作者:
GBKEE
時間:
2013-9-23 06:39
回復
4#
wanney1111111
sort有橫的排序,試用錄製巨集可得程式碼.
[attach]16129[/attach]
作者:
joey0415
時間:
2013-11-7 11:51
回復
1#
ji12345678
SQL法
select top 5 * from [Sheet1$A1:B50] order by 數量 desc
區域大小可改 Sheet1$A1:B50
前幾名可改 top 5
[attach]16621[/attach]
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)