我最近开发了一个工作模型,并收到了添加附加功能的请求。有没有简单的方法来更改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
你能告诉我们一些你的代码吗? –
我想知道为什么你需要在代码中创建所有这些公式。如果您只是在工作表(可能是一个模板?)中创建它们,则公式会在添加或删除列时自动调整。 –