返回列表 上一主題 發帖

[發問] vba陣列計算數值

[發問] vba陣列計算數值

請問一下如果要針對每個sheet的e8:e31做最小值/平均值/最大值計算,再將計算所得的數值顯示在e32/e33/e34,程式要怎麼寫(第3行一直出現錯誤)


    For i = 2 To Worksheets.Count
           For a = 5 To 9
                   arr = Worksheets(i).Range(Cells(8, a), Cells(31, a)).Value
                   Worksheets(i).[E32] = Application.WorksheetFunction.Min(arr)
                   Worksheets(i).[E33] = Application.WorksheetFunction.Average(arr)
                   Worksheets(i).[E34] = Application.WorksheetFunction.Max(arr)
           Next
    Next

回復 1# smallpoper
  1. For i = 2 To Worksheets.Count
  2.         For A = 5 To 9
  3.             With Worksheets(i)
  4.                 Arr = .Range(.Cells(8, A), .Cells(31, A)).Value
  5.                 '陣列導入儲存格的值,一律是二維陣列
  6.                 Arr = Application.Transpose(Arr) '用工作表函數轉置為一為陣列
  7.                 .Cells(32, A) = Application.WorksheetFunction.Min(Arr)
  8.                 .Cells(33, A) = Application.WorksheetFunction.Average(Arr)
  9.                 .Cells(34, A) = Application.WorksheetFunction.Max(Arr)
  10.             End With
  11.         Next
  12.     Next
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 1# smallpoper

試試看
  1. Sub test()
  2. Dim arr As Range
  3. For i = 2 To Worksheets.Count
  4. Set arr = Sheets(i).Range("e8:e31")
  5.                Sheets(i).[E32] = Application.WorksheetFunction.Min(arr)
  6.                Sheets(i).[E33] = Application.WorksheetFunction.Average(arr)
  7.                Sheets(i).[E34] = Application.WorksheetFunction.Max(arr)
  8. Next
  9. End Sub
複製代碼

TOP

謝謝各位的回覆

TOP

        靜思自在 : 是非當教育,讚美作警惕。
返回列表 上一主題