首页 文章

使用变量在VBA中创建if百分位数

提问于
浏览
1

我目前正试图创建一个函数来计算符合标准的数据的百分位数 . 我的数据更长,但是采用以下形式:

A          B
462        2015
675        2015
494        2014
802        2015
380        2014

所以在这种情况下,百分位数组是A列,标准范围是B列 . 下面的语句是计算A列中与第B列中的2015对应的值的第90个百分位数 . 我能让它工作的唯一方法是让VBA使用.formulaArray属性在引号中评估语句 . 使用上面的5行示例(我认为您需要超过5行来计算百分位数):

Cells(1, 10).FormulaArray = "=PERCENTILE.EXC(IF(A2:A5 = 2015,B2:B5),0.9)"

除了当我用函数中的范围/值替换变量时,这是有效的 . 这不起作用:

dim lastyear as integer
dim yearcol as range
dim valuescol as range

lastyear = 2015
valuescol = range(cells(1,1),cells(5,1))
yearcol = range(cells(1,2),cells(5,2)

Cells(1, 10).FormulaArray = "=PERCENTILE.EXC(IF(yearcol = lastyear, valuescol,0.9)"

如果有人有任何建议,我会非常感激 .

谢谢

1 回答

  • 1

    您需要将变量移到引号之外:

    dim lastyear as integer
    dim yearcol as range
    dim valuescol as range
    
    lastyear = 2015
    Set valuescol = range(cells(1,1),cells(5,1))
    Set yearcol = range(cells(1,2),cells(5,2))
    
    Cells(1, 10).FormulaArray = "=PERCENTILE.EXC(IF(" & yearcol.address(0,0) & " = " & lastyear & ", " & valuescol.address(0,0) & ",0.9)"
    

相关问题