基于循环迭代更改单元格公式

我正在尝试插入并更改基于for循环迭代的计数公式。 我面对的问题是,即使代码运行没有错误,没有任何反应。 totalrowvariables是一致的0.我不知道我在哪里错了。 所有的variables都已经在循环之外初始化了。 CurrentColname是string,countUsedCols很长,totalRows很长。

For i = 2 To countUsedCols ActiveSheet.Cells(3, i).Select currentColName = ActiveSheet.Cells(3, i).Value If currentColName = "Valid From" Then totalrow = ActiveWorkbook.Sheets("Customer_Facing_View").Range("AR1").Formula = "=COUNTA($" & i & ":$" & i & ")" totalrow = ActiveWorkbook.Sheets("Customer_Facing_View").Range("AR1").Value 

几件事情。

在vba中,当你把X=Y=Z时,根据是否是y = z,X成为一个布尔值。

所以当你写:

 totalrow = ActiveWorkbook.Sheets("Customer_Facing_View").Range("AR1").Formula = "=COUNTA($" & i & ":$" & i & ")" 

因为该单元格中的公式与您提供的string不同,所以返回false。

其次,您的COUNT A将parsing为一行而不是一列。 i是一个数字,而不是一封信。

因此,从第一个expression式中删除totalrow =并更改范围引用。

 ActiveWorkbook.Sheets("Customer_Facing_View").Range("AR1").Formula = "=COUNTA(" & Columns(i).Address &")" 

我想你想写一个公式到单元格AR1来计算行数(第一个totalrow语句); 并获取该值(与第二个totalrow语句)。 但是我相信斯科特所说的第一个总结性陈述是错误的。 你需要改变它。

另外,对于“计数”公式,您需要包含原始工作表名称,否则只计算Customer_Facing_View工作表中的列。