Board logo

標題: [發問] vba陣列計算數值 [打印本頁]

作者: smallpoper    時間: 2014-4-11 14:25     標題: 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
作者: GBKEE    時間: 2014-4-11 14:54

回復 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
複製代碼

作者: owen06    時間: 2014-4-11 15:03

回復 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
複製代碼

作者: smallpoper    時間: 2014-4-11 15:25

謝謝各位的回覆




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)