【问题标题】:percentile formula error in VBAVBA中的百分位数公式错误
【发布时间】:2017-01-15 04:57:54
【问题描述】:

我正在尝试通过 VBA 为特定范围应用公式。这是我的 VBA 编辑器中的代码:

Sheets("WBR45").Range("AE105").Formula = "=PERCENTILE.INC(TP!$A$3:$A$30:$B$3:$B$30:$C$3:$C$30:$E$3:$E$30,50%)*24"

当它运行时,下面的公式会在目标单元格中​​更新:

=PERCENTILE.INC(TP!$A$3:$A$30:$B$3:$B$30:$C$3:$C$30:$E$3:$E$30,50%)*24

但我在目标单元格中​​收到错误 #VALUE!。

当我点击“显示计算步骤”时,只有公式的这部分有下划线:

TP!$A$3:$A$30:$B$3:$B$30

我不知道这个简单的公式有什么问题。有人可以看看吗

【问题讨论】:

  • 工作表TP中的所有数据单元格吗?
  • 是的,在上述代码中的特定范围内
  • 您是否真的希望该函数对单元格 A3:E30(包括 D 列)进行操作?还是只对 A、B、C 和 E 列中的单元格进行操作?

标签: vba excel


【解决方案1】:

老实说,我不知道你在做什么,但这可能会解决它:

"=PERCENTILE.INC(TP!$A$3:$A$30:TP!$B$3:$B$30:TP!$C$3:$C$30:TP!$E$3:$E$30,50%)*24"

【讨论】:

  • @walterwhile 和/或 A.S.H.,你能解释一下像 TP!$A$3:$A$30:TP!$B$3:$B$30:TP!$C$3:$C$30:TP!$E$3:$E$30 这样的参考是如何工作的吗?我尝试了它的变体,发现它的行为与$A$3:$E$30 相同——也就是说,PERCENTILE.INC 函数包含 D 列中的值(如果有的话)。
  • @vknowles 是的,在这种情况下是一样的。有时一个范围可能是多个范围的联合,在这种情况下,您可能需要指定每个区域的父级。
  • @vknowles - 现在我明白你的意思了 - 多个 :s 被忽略,只有第​​一个和最后一个单元格用于确定范围,例如Sum(A1:C1,D4:E4) 将对单元格 A1B1C1D4E4 中的值求和,但 Sum(A1:C1:D4:E4) 充当 Sum(A1:E4)
  • @YowE3K 好吧,看起来,这个: 运算符看起来是一致的。它的工作方式,不知何故,产生了“最小跨越矩形!”。毕竟,这就是单个A1:E4 所发生的情况,因此,它与A1:E7:F4 相同,等于A1:F7。即“最小跨越矩形”。太棒了!
  • @vknowles - 尝试将该公式更改为 =SUM(A5:A1:C5:C1:E2:E1:F4:F3),您会注意到 Excel 会将其改回 - 它总是尝试将第一个引用设为“左上角”,第二个引用设为“右下角”。而且,虽然 Excel 在您编辑公式时会显示各个矩形,但在进行计算时会完全忽略它们。正是您对这个问题的原始评论使我们注意到了这种奇怪的行为。
【解决方案2】:

您的公式中似乎存在三个错误:

  1. 您使用: 来分隔范围,而不是,
  2. 您没有指定第二个、第三个和第四个范围所指的工作表,因此它默认为出现公式的工作表(即工作表“WBR45”)
  3. 多个范围需要用括号 (...) 括起来才能作为单个范围传递。

如果您试图让您的函数在范围 A3:C30 和范围 E3:E30(即 A3:E30 但忽略 D 列)上运行,并且这些范围在“TP”工作表上,我相信您需要将公式更改为

Sheets("WBR45").Range("AE105").Formula = "=PERCENTILE.INC((TP!$A$3:$A$30,TP!$B$3:$B$30,TP!$C$3:$C$30,TP!$E$3:$E$30),50%)*24"

或者,稍微简化

Sheets("WBR45").Range("AE105").Formula = "=PERCENTILE.INC((TP!$A$3:$C$30,TP!$E$3:$E$30),50%)*24"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-29
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多