Excel 使用COUNTIFS作为公式的VBA

Excel 使用COUNTIFS作为公式的VBA,excel,vba,excel-formula,Excel,Vba,Excel Formula,我使用=COUNTIF($B$2:$B$8,“>”&$B2)+COUNTIF($B$2:B2,B2) 此函数用于在组中进行排名。 我试着把它当作 Worksheets("A").Range("A1").Formula ="=COUNTIF($B$2:$B$8,">"&$B2)+COUNTIF($B$2:B2,B2)" 但它只返回真/假,而不是函数。 我想在单元格上写下这个函数,并自动填充到最后一行 谢谢第一个COUNTIF中的$B2必须是文本,以“>表示。所以公式应该是这样的

我使用
=COUNTIF($B$2:$B$8,“>”&$B2)+COUNTIF($B$2:B2,B2)
此函数用于在组中进行排名。 我试着把它当作

Worksheets("A").Range("A1").Formula ="=COUNTIF($B$2:$B$8,">"&$B2)+COUNTIF($B$2:B2,B2)"
但它只返回真/假,而不是函数。 我想在单元格上写下这个函数,并自动填充到最后一行


谢谢

第一个COUNTIF中的$B2必须是文本,以“>表示。所以公式应该是这样的

希望这有帮助

这里发生了什么事? 如果仔细查看代码并将其添加到编辑器中

Worksheets("A").Range("A1").Formula ="=COUNTIF($B$2:$B$8,">"&$B2)+COUNTIF($B$2:B2,B2)"
它将自动添加一些空格,如下所示

Worksheets("A").Range("A1").Formula = "=COUNTIF($B$2:$B$8," > "&$B2)+COUNTIF($B$2:B2,B2)"
因此,您可以清楚地看到它由4个部分组成:

  • 工作表(“A”).范围(“A1”).公式
    对单元格公式的引用
  • =
    操作员
  • “=COUNTIF($B$2:$B$8,”
    String1
  • 另一个操作员
  • “&$B2)+COUNTIF($B$2:B2,B2)”
    String2
  • 因此,Excel将这两个字符串与
    进行比较,因为这不是以第二个
    结尾的公式的一部分。因此
    String1>String2
    要么是
    True
    要么是
    False

    解决方案 要将
    包含到公式中,需要将字符串中的引号加倍

    Worksheets("A").Range("A1").Formula = "=COUNTIF($B$2:$B$8,"">""&$B2)+COUNTIF($B$2:B2,B2)"
    

    现在,
    “=COUNTIF($B$2:$B$8,“>”&$B2)+COUNTIF($B$2:B2,B2)“
    被视为一个完整的字符串。

    您需要将公式中的引号加倍为什么要将公式添加为图像?请编辑您的答案并将其作为文本。除了@FunThomas所说的之外,这可能会解释为什么:•实际上我不明白为什么您在该公式中添加了一个额外的
    &“&
    ,这是不需要的。OP只需将其代码中的
    “>”和$B2
    替换为
    “>”和$B2
    。此外,如果将字符串与数字连接起来,例如
    result=“>”&5
    ,则该数字将隐式转换为字符串,与
    result=“>5”
    相同。