У меня есть макрос, который предназначен для вычисления как 20-го, так и 80-го процентилей данных в данной строке. Я получаю сообщение об ошибке:
Ошибка времени выполнения '1004': невозможно получить свойство Percentile класса WorksheetFunction
Sub create_columns_test4()
Dim WS As Worksheet
Dim colNo As Long
Dim rowNo As Long
For Each WS In ActiveWorkbook.Worksheets
With WS
'Create columns and name appropriately
If .Cells.Find("20th Percentile") Is Nothing And _
.Cells.Find("80th Percentile") Is Nothing Then
.Columns("C:C").Insert Shift:=xlToRight, _
CopyOrigin:=xlFormatFromLeftOrAbove
.Cells(16, 3).Value = "20th Percentile"
.Columns("D:D").Insert Shift:=xlToRight, _
CopyOrigin:=xlFormatFromLeftOrAbove
.Cells(16, 4).Value = "80th Percentile"
.Range("c16", "d16").Font.Bold = True
' find last column of data
colNo = .Cells(16, Columns.Count).End(xlToLeft).Column
'I want the percentile to run from rows 16 to 79 individually
For rowNo = 17 To 79
'from column C to the column before the matching column I've just created
.Cells(rowNo, 3).Value = Application.WorksheetFunction.Percentile(.Cells(rowNo, colNo), 0.2)
.Cells(rowNo, 4).Value = Application.WorksheetFunction.Percentile(.Cells(rowNo, colNo), 0.8)
Next
End If
End With
Next WS
End Sub
Цель состоит в том, чтобы получить 20-й и 80-й процентили для каждой строки, отдельно от строк 16 до 79, от столбца E до последнего столбца с данными. Это потому, что каждый лист отличается, поэтому последний ряд будет меняться. Вот пример некоторых моих данных: