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

时间:2016-10-12 19:17:54

标签: excel vba excel-vba

我正在尝试根据for循环的迭代插入和更改counta公式。我面临的问题是,即使代码运行没有错误,也没有任何反应。 totalrow变量始终为0.我不确定我在哪里出错了。所有变量都已在循环外初始化。 CurrentColname是string,countUsedCols是long,totalRows是long。

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

2 个答案:

答案 0 :(得分:2)

有几件事。

在vba中放置X=Y=Z X根据y = z是否变为布尔值。

所以当你写:

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

Totalrow返回false,因为该单元格中的公式与您提供的字符串不同。

第二个COUNT A将解析为一行而非一列。 i是一个数字,而不是一个字母。

所以从第一个表达式中删除totalrow =并更改范围引用。

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

答案 1 :(得分:0)

我想你想在Cell AR1中写一个公式来计算行数(用第一个totalrow语句);然后获取该值(使用第二个totalrow语句)。但我相信斯科特表示,第一个完整的声明是错误的。你需要改变它。

同样对于Counta公式,您需要包含原始工作表名称,否则它只计算Customer_Facing_View工作表中的列。