返回列表 上一主題 發帖

兩段條件式總和篩選(小女子跪求程式!!)

兩段條件式總和篩選(小女子跪求程式!!)

各位大師小女子有一實驗表格如附件 item.rar (7.07 KB)

A工作表想要篩選的條件為以下

條件1:b欄(名稱:係數A)由小到大排序(遞增排序)

條件2:j欄(名稱:藥劑量)由上而下累加小於20

取得相對應的編號(k欄)複製貼在B工作表a欄上

以此類推係數B到係數T,共要取得8欄編號貼在B工作表上

附件B工作表小女子已經以人工判斷做好大家可參考

因係數及藥劑量每次實驗數據不同,人工判斷偶有誤差

故請各位大師幫忙,拜託,謝謝!!
an

本帖最後由 Hsieh 於 2010-7-21 23:22 編輯

回復 1# an13755


    你目前B表的數據是完整的嗎?
依我的理解你先看看
  1. Sub nn()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. Set d1 = CreateObject("Scripting.Dictionary")
  4. With Sheet36
  5.   For k = 2 To 9
  6.      For r = 2 To .Cells(65536, k).End(xlUp).Row
  7.         d(.Cells(r, k).Value) = d(.Cells(r, k).Value) + .Cells(r, 10)
  8.         If d(.Cells(r, k).Value) < 20 Then d1(.Cells(r, k).Value) = .Cells(r, "K")
  9.      Next
  10.      ar = d.keys
  11.      ReDim ay(d1.Count)
  12.      For i = 1 To d1.Count
  13.        n = Application.Small(ar, i)
  14.        ay(i - 1) = d1(n)
  15.      Next
  16. With Sheet1
  17. .Columns(k + 8) = ""
  18. .Cells(1, k + 8).Resize(d1.Count, 1) = Application.Transpose(ay)
  19. End With
  20.   d.RemoveAll
  21.   d1.RemoveAll
  22.   Next
  23. End With
  24. End Sub
複製代碼
執行後答案在J:Q欄你比較看看差異在哪?
學海無涯_不恥下問

TOP

我的程式執行結果跟一樓的比較接近,唯一的差別在 B14 與 B15 兩個數字相對調.

Sub Macro1()
  Dim Counter As Integer, i As Integer, num As Integer
'
  For Counter = 2 To 9
    Worksheets("a").Cells(1, Counter).Sort _
    Key1:=Worksheets("a").Cells(, Counter), _
    Header:=xlGuess

    i = 2
    num = Worksheets("a").Cells(2, 10)

    While num < 20
      Worksheets("b").Cells(i - 1, Counter - 1) = Worksheets("a").Cells(i, 11)
      i = i + 1
      num = num + Worksheets("a").Cells(i, 10)
    Wend
  Next Counter
End Sub

樓主可以參考看看...

TOP

多謝兩位大師的幫忙

l大的程式完全解決小女子的問題

讓我又學嘞一些東西謝謝!!

h大的程式跑到06行出現錯誤

是因為用2003的關係嗎?anyway再次感謝!!
an

TOP

回復 4# an13755


    06行會出錯?不會吧
原來是要這樣的結果,我會錯意了
  1. Sub nn()
  2. Dim Ar()
  3. Application.ScreenUpdating = False
  4. With Sheet36
  5.   For k = 2 To 9
  6.    s = 0: r = 2
  7.   .Cells(1, k).CurrentRegion.Sort key1:=.Cells(1, k), Header:=xlYes
  8.   cnt = .Cells(r, "J")
  9. While cnt < 20
  10.   ReDim Preserve Ar(s)
  11.   Ar(s) = .Cells(r, "K")
  12.   s = s + 1: r = r + 1
  13.   cnt = cnt + .Cells(r, "J")
  14. Wend
  15. With Sheet1
  16. .Columns(k + 8) = ""
  17. .Cells(1, k + 8).Resize(s, 1) = Application.Transpose(Ar)
  18. End With
  19. Erase Ar
  20.   Next
  21. .[A1].CurrentRegion.Sort key1:=.[A1], Header:=xlYes
  22. End With
  23. Application.ScreenUpdating = True
  24. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 【時間如鑽石】時間對一個有智慧的人而言,就如鑽石般珍貴;但對愚人來說,卻像是一把泥土,一點價值也沒有。
返回列表 上一主題