作者brainerd (布雷纳德)
看板Visual_Basic
标题[VBA ] 请问关於排序以及累加的问题
时间Thu Jun 25 13:47:44 2009
小弟想在Excel撰写一支VBA的程式
规则如下
《Excel资料库》
Pi Di
Job1 23 40
Job2 25 74
Job3 15 70
Job4 14 60
Job5 21 90
《规则》
※ Di 小的优先排列
※ Pi 累加-- Pi累加的值没有超过Di,则继续排下一个
-- Pi累加的值超过Di,则优先拿掉最大的Pi(包含当前的Pi也要纳入考虑)
拿掉後 LB +1
Pi累加的值减当前最大的Pi後,继续排列
全部排完後,计算出 LB
《人脑赛电脑-试演算》
Job Pi Di
Job1 23 40
Job4 23+14=37 60
Job3 37+15=52 70
Job2 52+25=77 74 -> 此时Pi累加值已超过当前Di值,
-> 故拿掉最大的Pi,即Job2的Pi=25 (目前最大)
Job5 52+21=73 90
因为总共拿掉了1个Pi,故LB = 1
《目前遭遇问题》
小弟已经写好排序的方法
但是不知道该如何进行下一步「累加」与计算「LB」
麻烦前辈们为我起个头,指点一下,谢谢
Sub 按钮1_Click()
Columns("C:C").Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C1"),
_
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A2:C99999")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.161.118.63
1F:推 qsss:排序完後, 跑 While 回圈, 然後设定累加变数, 最大值变数 06/30 00:22
2F:→ qsss:LB (Count) 变数, 再依照你要的逻辑写一下应该就可以了 06/30 00:23
3F:→ brainerd:感谢qsss大指点迷津,小弟有点头绪了 ^^" 07/01 23:28