在宏中使用工作表函数

时间:2015-07-16 12:45:11

标签: excel vba excel-vba

我在VBA中有一个整数数组,我希望从中获得上下四分位数。

我想使用此方法来获取它们:https://msdn.microsoft.com/en-us/library/office/ff836118.aspx

文档建议您可以使用数组来执行此操作,但是当我尝试运行我的代码时(下面)我收到一条错误,指出无法获取WorksheetFunction类的Quartile属性

请协助。

Dim totalsalesthatday() As String
Dim doINeedTo As Boolean
Dim totalsalesthatdayAverage As Integer
Dim randomnumberthingy As Integer
Dim quartile1 As Integer
Dim quartile3 As Integer
Dim iqr As Integer
Dim upper As Integer
Dim lower As Integer
quantity = 0
For Each queryaddress In worksheetname.Range("A2:A21")
query = queryaddress.Value
offsetnum = 0
If offsetnum = 0 Then
doINeedTo = True
End If
For Each daysoftheweek In Sheets
quantity = 0
If InStr(1, daysoftheweek.Name, worksheetnamename, vbTextCompare) > 0 And daysoftheweek.ListObjects.Count > 0 Then
Set itemaddress = daysoftheweek.Columns(5).Find(query, , xlValues, xlWhole)
If Not itemaddress Is Nothing Then
        firstAddress = itemaddress.Address
        Do
Set itemrow = itemaddress.EntireRow
quantity = quantity + itemrow.Columns(6).Value
Set itemaddress = daysoftheweek.Columns(5).FindNext(itemaddress)
Loop While Not itemaddress Is Nothing And itemaddress.Address <> firstAddress
End If
   offsetnum = offsetnum + 1
   ReDim Preserve totalsalesthatday(offsetnum)
   totalsalesthatday(offsetnum) = daysoftheweek.ListObjects.Item(1).ListRows.Count
   queryaddress.Offset(0, offsetnum).Value = quantity
   worksheetname.Range("A1").Offset(0, offsetnum).Value = daysoftheweek.Name
End If
Next
If doINeedTo Then
quartile1 = WorksheetFunction.Quartile(totalsalesthatday, 1)
quartile3 = WorksheetFunction.Quartile_Inc(totalsalesthatday, 3)
iqr = quartile3 - quartile1
upper = quartile3 + (iqr * 1.5)
lower = quartile1 - (iqr * 1.5)

有问题的错误在此行:quartile1 = WorksheetFunction.Quartile(totalsalesthatday, 1)

1 个答案:

答案 0 :(得分:2)

.Quartile函数参数是一个数组和一个double。尝试更改您的数据类型。