我知道這可能是超級簡單的,但我從未在VBA中做過,因此無法找到存在的問題。將公式插入到單元格中,其中部分公式取決於循環中的值
我正在循環一組工作表,生成新工作表,並根據條件/值在源表中插入內容(「X-Availability」)。其中一個值是我想成爲插入到一列單元格中的公式的一部分。在第一次迭代中,即來自(「X可用性」)的H2。在下一次迭代中,H3等
如果我手動輸入這個公式到Excel中,我會輸入=INT($N2/('X-Availability'!$H$2+0.1))+1
並填充下來。然後在下一張表中,我只是將$H$2
更改爲$H$3
。由於我在VBA循環中,我顯然需要做一些不同的事情。
這是我迄今爲止沒有工作。 (應用程序定義或對象定義的錯誤)我在這裏錯過了什麼?
請假定FOR循環和WITH結束已經正確。
With ThisWorkbook
Set r = .Sheets("X-Availability").Range("B2:B" & lastrow(Worksheets("X-Availability")))
For Each c In r
.Sheets(c.Offset(0, 3).Value).Copy after:=.Sheets(.Sheets.Count)
With ActiveSheet
.Name = c
lrow = .Range("A" & .Rows.Count).End(xlUp).Row
.Range("K2:K" & lrow).Value = c.Offset(0, -1)
.Range("L2:L" & lrow).Value = c
.Range("M2:M" & lrow).Value = c.Offset(0, 1)
.Range("N2:N" & lrow).Value = ("=ROW($N2)-1")
-------------> .Range("O2:O" & lrow).Formula = "=INT($N2/(" & c.Offset(0, 6) & "+.1))+1"
.Range("P2:P" & lrow).Value = ("=COUNTIF($O:$O,$O2)")
.Range("Q2:Q" & lrow).Value = ("=IF($P2<100,$O2-1,$O2)")
.Range("R2:R" & lrow).Value = ("=CONCATENATE(K2,"" "",Q2)")
.Range("S2:S" & lrow).Value = ("=CONCATENATE(""CA_Full_"",RC[-7],"" "",RC[-2],""_"",'X-User Input'!R4C2)")
感謝您的幫助!
如果我理解你正確,你需要公式來引用單元格的位置而不是值。嘗試使用'.address'如下:'c.Offset(0,6).Address' – 2014-10-12 04:01:10