参数为CountIfS的Excel宏

| 我正在编写一个程序,该程序将搜索充满奥林匹克拳击数据的电子表格。用户使用组合框选择国家/地区和体重等级,然后点击开始!按钮,程序将调用Excel电子表格中的宏,如下所示:
Sub paramedals(class As String, country As String)

  MsgBox \" Counting by weight class \" & class & \" and country \" & country
  Range(\"I73\").Select
    ActiveCell.FormulaR1C1 = _
    \"=COUNTIFS(C[-7], class,C[-6],country,C[-4], \"\"Gold\"\")\"

End Sub
我放入msgbox命令以确保它正确读取了参数-确实如此。问题在于,不是将公式的参数设置为给定的字符串,而是从字面上将公式设置为COUNTIFS(B:B,class等。)。 就像我之前说过的那样,由于msgbox,我知道正确的字符串被发送到了宏,因此它可以正确显示。您可以不对COUNTIFS使用参数吗?     
已邀请:
您需要从变量中分离出公式的字符串部分
Range(\"I73\").FormulaR1C1 = _
\"=COUNTIFS(C[-7],\" & class & \",C[-6],\" & country & \",C[-4], \"\"Gold\"\")\"
编辑: 这两项工作,一个是R1C1,另一个是标准公式
Range(\"I73\").FormulaR1C1 = _
\"=COUNTIFS(C[-7],\"\"=\" & class & \"\"\",C[-6],\"\"=\" & country & \"\"\",C[-4],\"\"=Gold\"\")\"

Range(\"I73\").Formula =  _ 
\"=COUNTIFS(B:B,\"\"=\" & class & \"\"\",C:C,\"\"=\" & country & \"\"\",E:E,\"\"=Gold\"\")\"
一个好的技巧是先使用debug.print或msgbox构建该语句,然后您可以查看进入单元格时的外观。     
或者,您可以更换
  Range(\"I73\").Select
    ActiveCell.FormulaR1C1 = _
    \"=COUNTIFS(C[-7], class,C[-6],country,C[-4], \"\"Gold\"\")\"
通过
  Range(\"I73\").Value = application.WorksheetFunction.CountIf(<your formula>)
当然,仅当您只能显示值而不是公式时,它才有效。     

要回复问题请先登录注册