Excel VBA – 遍历范围并在每个单元格中设置公式
我有一个工作簿,我有一个工作表,其中包含大量的数据。 我的目标是创build一个macros,在另一个工作表中插入一个公式以复制第一个工作表中的数据。 让我们打电话给第一张“Numbers1”和第二张“TidyNumbers1”。
在“TidyNumbers1”表中,我想循环遍历从列A到M和行1到60的每个单元格。所以我有一个macros,看起来像这样:
Sub updateFormulasForNamedRange() Dim row, col, fieldCount As Integer colCount = 13 RowCount = 60 For col = 1 To colCount For row = 1 To RowCount Dim strColCharacter If col > 26 Then strColCharacter = Chr(Int((row - 1) / 26) + 64) & Chr(((row - 1) Mod 26) + 65) Else strColCharacter = Chr(row + 64) End If Worksheets("TidyNumbers1").Cells(row, col).Formula = "=IF(Numbers1!E" & col & "<>0;Numbers1!" & strColCharacter & row & ";"")" Next row Next col End Sub
但公式应该看起来像A列第2行:
IF(Numbers1!E2<>0;Numbers1!A2;"")"
而A列第3行的公式应该是这样的:
IF(Numbers1!E3<>0;Numbers1!A3;"")"
B列第2行的公式应如下所示:
IF(Numbers1!E2<>0;Numbers1!B2;"")"
换句话说,该公式会查看列E中的值%行是否为0,并在条件满足时将其复制。
但是,我看到我需要翻译我的整数variables行与字母,因为公式可能需要“A”,而不是1.另外,我得到一个1004错误(应用程序定义或对象定义的错误),如果我只是试图使用:
Worksheets("Numbers1").Cells(row, col).Formula = "=IF(Numbers1!E" & row & "<>0;Numbers1!" & col & row & ";"")"
我清楚地看到,整数行应该被翻译成字母,如果这是可能的。 或者如果有人有任何其他build议,可能会起作用。 另外,1004的错误我不清楚为什么会发生。 我可以定义一个stringvariables,并设置完全相同的值,并没有错误。 所以这可能是公式吧,我猜想呢?
这里是我以前的职位,其中包含将列号转换为字母的function,反之亦然:
VBA根据input值查找下一列
编辑:到你的1004错误:尝试这样的事情:
=IF(Numbers1!E" & row & "<>0,Numbers1!A" & row & ","""")"
(对于基本string中的一个引号,使用“ ;
而不是""
和""
,对两个引号使用""""
)。
使用Cells.Address函数获取单元格地址不是很容易吗?
例如:
MsgBox Cells(1, 5).Address
显示“$ E $ 1”
最好的祝福