我最近開發了一個工作模型,並收到了添加附加功能的請求。有沒有簡單的方法來更改Excel VBA中的單元格引用?
問題不在於添加,因爲大多數情況下只需添加一個或兩個額外的列。但是,每次添加一列時,我都必須逐行瀏覽我的代碼並更改每個公式參考值,例如G到H,H到I,I到J等
有沒有什麼辦法可以讓我自動化這個過程,而不必單獨更改每個配方,或者在構建我的下一個模型時可以牢記的最佳實踐刮?
例如,假設有人要求額外的計算,要求我在D列中插入一個公式。目前我要去每列(下面例子中的H,J,K和L)以及手動更新他們分別爲I,K,L和M.
'Year 1 ASP formula = (Year 1 Bookings)/(Year 1 Units)
FormulaRange_ASP1 = "H23:H" & NumRows
Range(FormulaRange_ASP1).Value = "=IFERROR(G23/F23,0)"
Range(FormulaRange_ASP1).NumberFormat = "0.00"
Application.ScreenUpdating = False
'Year 2 AR Units formula = (Year 1 Units) * (Vlookup AR Retention Rate for product in column C)
FormulaRange_ARUnits2 = "J23:J" & NumRows
Range(FormulaRange_ARUnits2).Value = "=IF(E23 = 12,VLOOKUP(D23,$B$8:$F$19,4,FALSE),0) * F23 * AR_Opt_In"
Range(FormulaRange_ARUnits2).NumberFormat = "#,##0_)"
Application.ScreenUpdating = False
'Year 2 AR ASP formula = (Vlookup ASP for product in column C)
FormulaRange_AR_ASP2 = "K23:K" & NumRows
Range(FormulaRange_AR_ASP2).Value = "=IFERROR(VLOOKUP(D23,$B$8:$F$19,2,FALSE),0)"
Range(FormulaRange_AR_ASP2).NumberFormat = "0.00"
Application.ScreenUpdating = False
'Year 2 AR Bookings formula = (Year 2 Units) * (Year 2 ASP)
FormulaRange_AR_Bookings2 = "L23:L" & NumRows
Range(FormulaRange_AR_Bookings2).Value = "=J23 * K23"
Range(FormulaRange_AR_Bookings2).NumberFormat = "$#,##0_)"
Application.ScreenUpdating = False
你能告訴我們一些你的代碼嗎? –
我想知道爲什麼你需要在代碼中創建所有這些公式。如果您只是在工作表(可能是一個模板?)中創建它們,則公式會在添加或刪除列時自動調整。 –