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”

最好的祝福