我想知道如何将此代码转换为第I列的动态范围自动填充,以便以后可以自由编辑Excel工作表而无需调整vba代码。
build.gradle
答案 0 :(得分:0)
查看自动填充功能:
Range("I2:I" & H).AutoFill Destination:=Range("I2:I2000"), Type:=xlFillDefault
答案 1 :(得分:0)
首先,您只是隐含地将 Report-Charles,M 引用为ActiveSheet property以将.Formula放入其中;没有明确指出直接参考。
其次,要分配公式,请使用直接.Formula书写,Range.AutoFill method或Range.FillDown method。
最后,通过VBA编写公式.Formula应该使用EN-US语法和区域设置。如果您要使用非{EN-US}区域设置,例如3,35
或4,25
,请使用Range.FormulaLocal property。
最重要的是,将数字视为数字;不像文本那样看起来像数字。
with Worksheets("Report-Charles, M")
h = .UsedRange.Rows.Count
.Range("I2:I" & H).FormulaLocal = _
"=IF((AND(OR(E2=""Unrated"", E2=TEXT(,)), OR(G2<>""Unrated"", G2<>TEXT(,)))), G2, IF(E2>=4,25, ""High Performance"", IF(E2<3,35, ""Low Performance"", ""Medium Performance"")))"
.Range("I2:I" & H).Formula = _
"=IF((AND(OR(E2=""Unrated"", E2=TEXT(,)), OR(G2<>""Unrated"", G2<>TEXT(,)))), G2, IF(E2>=4.25, ""High Performance"", IF(E2<3.35, ""Low Performance"", ""Medium Performance"")))"
end with
with Worksheets("Report-Charles, M")
'any of the following will fill column I with formulas to the last row in .UsedRange
'all of the following assumes a valid formula in I2
h = .UsedRange.Rows.Count
.Range("I2:I" & H).Formula = .Range("I2").Formula
.Range("I2:I" & H).FillDown
.Range("I2:I" & H).DataSeries Rowcol:=xlColumns, Type:=xlAutoFill
.Range("I2").AutoFill Destination:=.Range("I2:I" & H), Type:=xlFillDefault
end with
我缩短了一个IF
条件,因为AND
是不必要的,而Medium是默认响应。使用TEXT(,)
与说""
相同,而不必将双引号加倍。