簡體   English   中英

Excel VBA - 循環遍歷范圍並在每個單元格中設置公式

[英]Excel VBA - Loop through range and set formula in each cell

我有一本工作簿,其中有一個包含大量數據的工作表。 我的目標是創建一個宏,在單獨的工作表中插入公式以復制第一張工作表中的數據。 讓我們將第一張表稱為“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,並在滿足條件時復制它。

但是,我發現我需要用字母翻譯我的 integer 變量 Row,因為公式可能需要“A”而不是 1。此外,如果我只是嘗試,我會收到 1004 錯誤(應用程序定義或對象定義錯誤)利用:

Worksheets("Numbers1").Cells(row, col).Formula = "=IF(Numbers1!E" & row & "<>0;Numbers1!" & col & row & ";"")"

我清楚地看到 integer 行應該翻譯成字母,如果可能的話。 或者,如果有人有任何其他可能有用的建議。 此外,我不清楚為什么會發生 1004 錯誤。 我可以定義一個字符串變量並為其設置完全相同的值,並且沒有錯誤。 所以我猜可能是公式欄抱怨它?

這是我以前的帖子,其中包含將列號轉換為字母的功能,反之亦然:

VBA 根據輸入值查找下一列

編輯:到您的 1004 錯誤:嘗試這樣的事情:

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

(使用;代替,""表示基本字符串中的一個引號,使用""""表示兩個引號)。

使用 Cells.Address function 獲取單元地址不是更容易嗎?

例如:

MsgBox Cells(1, 5).Address

顯示“$E$1”

此致

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM