首页 > 解决方案 > .FormulaR1C1 = Application.WorksheetFunction.CountIfs 参数不起作用

问题描述

我试图通过查看前 2 列并将它们与同一 Wokbook 中的另一个表进行比较来使用 countifs 语句。参考 RrC1、RC1 或其他任何东西都不起作用。结果我只得到“0”。如果我输入常量,它就可以工作。我确信我的论点 2、4、6 是问题所在。我就是想不通为什么!

Sub DataBase()

'Set my tables
    Dim Answers As ListObject
    Dim Table As ListObject
    Set Answers = Worksheets("quantitativ").ListObjects("DataQuant")
    Set Table = Worksheets("Database").ListObjects("Tabelle7")

'Set my Ranges for filters (Organizational level, Location, Function...)
    
    Set OrgRange = Answers.ListColumns(1).Range
    Set LocRange = Answers.ListColumns(2).Range

'Set Ranges for Answers to Questions (Scale)
Set Q1 = Answers.ListColumns(5).Range

Dim r As Long    'Row variables for For-Loop

    For r = 5 To Table.DataBodyRange.Rows.Count + 4
      
        'Q1
        Cells(r, 6).FormulaR1C1 = _
            Application.WorksheetFunction.CountIfs(Q1, RrC5, OrgRange, RrC1, LocRange, RrC2)
    
    Next r
    
End Sub

标签: excelvba

解决方案


Cells(r, 6).FormulaR1C1 = _
Application.WorksheetFunction.CountIfs(Q1, RrC5, OrgRange, RrC1, LocRange, RrC2)

这真是一团糟。您正在尝试使用工作表函数的结果加载公式。


如果您想将公式加载到单元格中,那么我会这样做:

Cells(r, 6).Formula = "=CountIfs(" & Q1.Address & ", " & _
  Cells(r, 5).Address & ", " & OrgRange.Address & ", " & _
  Cells(r, 1).Address & ", " & LocRange.Address & ", " & _
  Cells(r, 2).Address & ")"

甚至:

Cells(r, 6).Formula = .Formula = "=CountIfs(" & _
       Q1.Address & ", E" & r & ", " & _
 OrgRange.Address & ", A" & r & ", " & _
 LocRange.Address & ", B" & r & ")"

但是,如果您想要评估公式并且只是将结果转储到单元格中..

Cells(r, 6).Value = Application.WorksheetFunction.CountIfs(Q1, _
    Cells(R, 5), OrgRange, Cells(R, 1), LocRange, Cells(R, 2))

请记住,尽管所有这些选项Cells(..都不是完全合格的。

将所有更改为.Cells(..会使这变得更好,将很多包装在一个

With WorkSheet("DESTINATION_SHEET") ... ... End With

非常可取。


推荐阅读