Рассчитать процентили для отдельных строк, используя VBA - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть макрос, который предназначен для вычисления как 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 до последнего столбца с данными. Это потому, что каждый лист отличается, поэтому последний ряд будет меняться. Вот пример некоторых моих данных: enter image description here

...