VBA的新行和COUNTIF函数

VBA的新行和COUNTIF函数,vba,excel,worksheet-function,countif,Vba,Excel,Worksheet Function,Countif,我试图计算列(W_1)中出现“1”的次数。 我在VBA上使用了以下代码(整个代码的一部分-如果需要,将添加更多)。数据也是表的一部分 Private Sub Macro() LastRow = x.Sheets("W_10").Range("A" & Rows.Count).End(xlUp).Row Dim NewRow As Integer NewRow = ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Row

我试图计算列(W_1)中出现“1”的次数。 我在VBA上使用了以下代码(整个代码的一部分-如果需要,将添加更多)。数据也是表的一部分

Private Sub Macro()

LastRow = x.Sheets("W_10").Range("A" & Rows.Count).End(xlUp).Row

Dim NewRow As Integer
NewRow = ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Row
NewRow = LastRow + 1
ActiveSheet.Cells(NewRow, 2).Select
ActiveCell.FormulaR1C1 = "=countif(@[W_1],1)"

End Sub
我一直得到以下错误

错误104-应用程序或对象定义错误

有人能告诉我哪里出了问题吗?
我以前在另一个案例中使用过类似的公式,效果很好。

使用.formula,而不是.FormulaR1C1,并在列引用中包含表名

Option Explicit

Sub wqew()
    Dim NewRow As Long
    With ActiveSheet
        NewRow = 13
        .Cells(NewRow, 2).Formula = "=countif(Table1[W_1], 1)"
    End With
End Sub

我没有您的示例数据来测试这一点,但我编辑了您的代码以使用一些更明确的引用,这可能会消除您的错误

Private Sub Macro()

Dim x As ActiveWorkbook
Dim LastRow As Integer

LastRow = x.Sheets("W_10").Range("A" & Rows.Count).End(xlUp).Row

Dim NewRow As Integer
NewRow = ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Row
NewRow = LastRow + 1
ActiveSheet.Cells(NewRow, 2).Select
ActiveCell.FormulaR1C1 = Application.WorksheetFunction.CountIf([W_1], 1)

End Sub

这一个很好用

1的数据类型是什么?它是1还是包括1?对不起,我忘了提它了。它只是“1”和“0”-常规数据类型如果要在表外粘贴公式,不需要提供表名和表列名吗?我们也尝试过。。tablename[column]、@tablename[column]、tablename@[column]和tablename[column]使用.Formula,而不是.FormulaR1C1并将表名包含在列引用中谢谢,我们理解了其中一个错误。但是,我无法确定行数(我们计划定期更新源文件,因此行数不断变化)。因此,我想在表的末尾添加一个新行,并在那里插入公式。
Sub FindingLastRow()

'PURPOSE: Different ways to find the last row number of a range
'SOURCE: www.TheSpreadsheetGuru.com

Dim sht As Worksheet
Dim LastRow As Long

Set sht = ThisWorkbook.Worksheets("Update")

'Ctrl + Shift + End
  LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
  sht.Cells(LastRow + 2, 2).Formula = "=countif(Resume[W_1],1)"

End Sub