返回列表 上一主題 發帖

[發問] VBA 搜尋資料列對應的最大值或最小值

回復 5# junkwei
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Rng As Range, i As Integer, Ar()
  4.     Set Rng = Range("iv1")
  5.     '進階篩選出"班級"欄不重複的值
  6.     Range("a:a").AdvancedFilter xlFilterCopy, , Rng, True
  7.     ReDim Ar(1 To 3, 1 To 1) '陣列重置
  8.     Ar(1, 1) = "班級"
  9.     Ar(2, 1) = "最大年紀"
  10.     Ar(3, 1) = "最小年紀"
  11.     i = 2
  12.     Do While Rng.Cells(i) <> "" '"班級"欄不重複的值(各班級)
  13.        With Range("a:a")
  14.             .Replace Rng.Cells(i), "=EX", xlWhole   '各班級換置為錯誤值
  15.             With .SpecialCells(xlCellTypeFormulas, xlErrors)
  16.                 ReDim Preserve Ar(1 To 3, 1 To i)
  17.                 Ar(1, i) = Rng.Cells(i)
  18.                 Ar(2, i) = Application.Max(.Cells.Offset(, 2))
  19.                 Ar(3, i) = Application.Min(.Cells.Offset(, 2))
  20.                 .Value = Rng.Cells(i)              '錯誤值換置回為各班級
  21.             End With
  22.             i = i + 1
  23.        End With
  24.     Loop
  25.     Rng.EntireColumn.Clear              '清除:進階篩選出"班級"欄不重複的值
  26.     Range("g1").Resize(UBound(Ar, 2), UBound(Ar, 1)) = Application.WorksheetFunction.Transpose(Ar)
  27.     'UBound(Ar, 2)陣列第2維的元素上限值
  28.     'UBound(Ar, 1)陣列第1維的元素上限值
  29. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 8# junkwei

Range("a:a").AdvancedFilter xlFilterCopy, , Rng, True
"a:a" -> A欄整欄
AdvancedFilter 方法 expression.AdvancedFilter(Action, CriteriaRange, CopyToRange, Unique)
CriteriaRange 沒有指定範圍,為不設下篩選條件,
Ar([相對為工作表的欄數], [相對為工作表的列數]) ,與工作表的Cells(列,欄)顛倒
ReDim Preserve Ar(1 To 3, 1 To i)
選擇性引數。當改變原有陣列最後一維的大小時,仍然保有原來的資料的關鍵字。
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 10# junkwei
"=EX" 如沒這公式傳回錯誤值 "#NAME?"

請詳看VBA 的說明
  1. SpecialCells 方法
  2. expression.SpecialCells(Type, Value)
  3. expression      必選。該運算式會傳回 [套用於] 清單中的其中一個物件。
  4. Type     必選的 XlCellType。要包含的儲存格。
  5. XlCellType 可以是這些 XlCellType 常數之一。
  6. xlCellTypeAllFormatConditions。  任何格式的儲存格
  7. xlCellTypeAllValidation。具有驗證準則的儲存格
  8. xlCellTypeBlanks。空儲存格
  9. xlCellTypeComments。包含註解的儲存格
  10. xlCellTypeConstants。包含常數的儲存格
  11. xlCellTypeFormulas。包含公式的儲存格
  12. xlCellTypeLastCell。已用範圍的最後一個儲存格
  13. xlCellTypeSameFormatConditions。  有相同格式的儲存格
  14. xlCellTypeSameValidation。  有相同驗證準則的儲存格
  15. xlCellTypeVisible。所有可見儲存格

  16. Value     選擇性的 Variant。如果 Type 為 xlCellTypeConstants 或 xlCellTypeFormulas 之一,此引數可用於確定結果中應包含哪幾類儲存格。將某幾個值相加可使此方法傳回多種型態的儲存格。預設情況下將指定所有常數或公式,對其型態則不加類型。可為下列 XlSpecialCellsValue 常數之一:

  17. XlSpecialCellsValue 可以是這些 XlSpecialCellsValue 常數之一。
  18. xlErrors
  19. xlLogical
  20. xlNumbers
  21. xlTextValues
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 【做人的開始】每一天都是故人的開始,每一個時刻都是自己的警惕。
返回列表 上一主題