我没有在VBA的经验,我需要这个百分功能转换为一个自定义的VBA函数计算百分使用自定义的VBA函数
=PERCENTILE(
IF('RAW JO TIME'!$J$2:$J$51816=$A7,
IF($B$4="(All)",'RAW JO TIME'!$P$2:$P$51816,
IF('RAW JO TIME'!$M$2:$M$51816=$B$4,'RAW JO TIME'!$P$2:$P$51816)
)
),
E$6)
其中$ A7,$ B $ 4和E $ 6应该作为参数传递...
我一直在尝试不同的方法,但没有工作。搜索在论坛上我发现了一个可能的解决办法是这样的:
ActiveCell.Formula = "=IF('RAW JO TIME'!$J$2:$J$51816=" & InputRange & ", IF($B$4=""(All)"",'RAW JO TIME'!$P$2:$P$51816, IF('RAW JO TIME'!$M$2:$M$51816=$B$4,'RAW JO TIME'!$P$2:$P$51816)))"
其中“InputRange”是为具有被搜索在另一片的范围值paramters通过细胞...
也试过这个
Dim r As Range
Set r.FormulaArray = "=IF('RAW JO TIME'!$J$2:$J$51816=$A7, IF($B$4=""(All)"",'RAW JO TIME'!$P$2:$P$51816, IF('RAW JO TIME'!$M$2:$M$51816=$B$4,'RAW JO TIME'!$P$2:$P$51816)))"
正如你所看到的,我没有使用的参数为这一个,只是想测试数组公式是...但我得到了相同的结果。执行在设置r.FormulaArray
停止我的理解是,这IF语句将返回小区或之后将由百分函数中使用的数据矩阵的范围...
但后来,我当调试代码,它被卡在ActiveCell.Formula ...为什么会这样?
我想知道在这种情况下,最好的解决方案是如何在函数中实现每个“if”作为VB if语句?
帮助将不胜感激
谢谢!
这是有效的,这是一个数组公式。 – ApplePie
@ jprealini你至少需要知道如何开始使用VBA。一种简单的方法是重建公式并使用Application.Evaluate()。 – ApplePie
@ Dave.Gugg,正如我所解释的那样,我需要创建一个自定义的PERCENTILE函数,将矩阵作为它的一系列数据,这些数据将成为“IF”语句和您在其中进行比较的结果... – jprealini