[英]applying variety of formula in different columns in excel using vba
我有多个公式要填充到工作表的不同列中。 我正在尝试使用此代码...
Dim strFormula(1 To 2) As Variant
Dim LastRow As Integer 'This is the LAST Non Empty Row
LastRow = ActiveWorkbook.Worksheets("FinalDetails").UsedRange.Row - 1 _
+ ActiveSheet.UsedRange.Rows.Count
With ThisWorkbook.Sheets("FinalDetails")
strFormula(1) = "=IF(V2='Green','Preferred',IF(V2='LightGreen','Satisfactory',IF(V2='Yellow','Mediocre',IF(V2='Orange','Low',IF(V2='Red','Very Low',IF(V2='Black','HighRisk', 'No Analysis'))))))"
strFormula(2) = "=IF(AB2<>"", CONCATENATE(AA2,' ','Band',' ',AB2),"")"
' strFormula(3) = "=A2/B2"
.Range("BH2:BI2").Formula = strFormula --'im having error on this Application defined or onject defined error
.Range("BH2:BI" & LastRow).FillDown
End With
End Sub
不幸的是,我在这里看到了这段代码,无论是否有效,都没有人响应。
使用VBA在单元格中放置公式时要记住的重要一点是在双引号上加倍:
Sub qwerty()
Range("A1").Formula = "=IF(Z1=""Happy"",1,2)"
End Sub
结果在单元格A1中具有此公式
=IF(Z1="Happy",1,2)
ActiveWorkbook.Worksheets(“ FinalDetails”)。UsedRange.Row始终为1,因此此处多余。
我认为ActiveSheet是“ FinalDetails”
有个更好的方法。
我会做这样的事情:
Dim vFormula(1 To 2) As Variant
Dim ra As String ' range address
Dim ur As Range ' used range
Dim pr As Range ' paste range
Dim rc As Integer ' row count
Dim cc As Integer ' column count
Dim hr As Integer ' header rows
Set ur = Worksheets("FinalDetails").UsedRange
hr = 1 ' number of header rows
ra = ur.Cells(1 + hr, 1).Address(False, False)
rc = ur.Rows.Count
cc = ur.Columns.Count
Set pr = ur.Offset(hr, cc).Resize(rc - hr, UBound(vFormula))
vFormula(1) = "=GetSatisfied(" & ra & ")"
vFormula(2) = "=IF(A$1<>""" & """, A1 & "" Band "" & B1, """ & """)"
pr.FormulaArray = vFormula
在这里,我使用了“最终详细信息”的使用范围,并在右侧创建了一个新的cc列,并对其进行了调整大小,以使其具有与原始行相同的行数,并且列的宽度与vFormulas列的尺寸相同。
我还为她处理了使用范围内的标题行。
在我的示例中,usedrange的第一列具有您在V列中获得的颜色满意度
对于strFormula(1),我编写了一个简单的函数GetSatisfied;
Function GetSatisfied(sColor As String) As String
Select Case sColor
Case "Green"
GetSatisfied = "Preferred"
Case "LightGreen"
GetSatisfied = "Satisfactory"
Case "Yellow"
GetSatisfied = "Mediocre"
Case "Orange"
GetSatisfied = "Low"
Case "Red"
GetSatisfied = "Very Low"
Case "Black"
GetSatisfied = "High Risk"
Case Else
GetSatisfied = "Not Analysed"
End Select
End Function
对于strFormula(2),您不需要连接-“&”或“ +”是连接-但您必须弄清楚如何编写字符串。
将立即窗口用于:
?“ = IF(A $ 12 <>”“”“&”“”,A1&“”乐队“”&B1,“”“&”“”)“
输出应与您希望单元格公式读取的内容匹配
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.