【发布时间】:2011-10-02 14:14:38
【问题描述】:
我有一个工作簿,其中有一个包含大量数据的工作表。 我的目标是创建一个宏,在单独的工作表中插入公式以复制第一张工作表中的数据。让我们将第一张表称为“Numbers1”,将第二张表称为“TidyNumbers1”。
在工作表“TidyNumbers1”中,我想遍历从 A 列到 M 列和第 1 到 60 行的每个单元格。所以我有一个宏,到目前为止看起来像这样:
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,如果满足条件,则复制它。
但是,我看到我需要用字母翻译我的整数变量 Row,因为公式可能需要“A”而不是 1。此外,如果我收到 1004 错误(应用程序定义或对象定义错误)尝试使用:
Worksheets("Numbers1").Cells(row, col).Formula = "=IF(Numbers1!E" & row & "<>0;Numbers1!" & col & row & ";"")"
如果可能的话,我清楚地看到整数行应该被翻译成字母。或者,如果有人有任何其他可能有用的建议。此外,我不清楚为什么会发生 1004 错误。我可以定义一个字符串变量并为其设置完全相同的值,并且没有错误。所以我猜可能是公式栏在抱怨它?
【问题讨论】:
-
您想将变量“col”替换为字母,而不是“row”(如您所写)
-
啊当然 :) 第一篇文章已更新。我设法找到了一种用字母翻译整数的方法。认为它有效。但我仍然收到这个 1004 错误
标签: excel excel-formula vba