[英]Loop through range in one sheet and have custom formula for each cell. Put data into a new sheet [excel][vba][bloomberg]
[英]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 錯誤。 我可以定義一個字符串變量並為其設置完全相同的值,並且沒有錯誤。 所以我猜可能是公式欄抱怨它?
這是我以前的帖子,其中包含將列號轉換為字母的功能,反之亦然:
編輯:到您的 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.