【问题标题】:Excel VBA - Loop through range and set formula in each cellExcel VBA - 遍历范围并在每个单元格中设置公式
【发布时间】: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


【解决方案1】:

这是我以前的一篇文章,其中包含将列号转换为字母的函数,反之亦然:

VBA Finding the next column based on an input value

编辑:到您的 1004 错误:尝试这样的事情:

  =IF(Numbers1!E" & row & "<>0,Numbers1!A" & row & ","""")"

(使用; 代替,"" 用于基本字符串中的一个 引号,"""" 用于两个 引号)。

【讨论】:

  • 我想我现在已经以某种方式控制住了。无论如何,我只需要 A 到 M 列。但现在真正的问题是在单元格中编写公式。我在哪里得到 1004 错误。
【解决方案2】:

使用 Cells.Address 函数获取单元格地址不是更简单吗?

例如:

MsgBox Cells(1, 5).Address

显示“$E$1”

最好的问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多