这是我第一次使用VBA for Excel(我通常编写Java和C ++代码),我希望得到一些提示。
我想为大型数据集编写一个宏,该宏将继续通过以下条件列表来提供美元结果:
根据此信息,将在行中放置一个新值,通过考虑单位大小,单位类型和相关产品来确定公用事业成本。我已经考虑过在循环中使用嵌套的Select Case
或嵌套条件,但总的来说我很丢失。
答案 0 :(得分:0)
似乎工作表公式可能会起作用,但在不知道计算是什么的情况下很难分辨。下面是您将放入标准模块的用户定义函数(UDF)。您可以从以下单元格中调用它:
=computecosts(A2,B2,C2)
显然,代码会根据数据的布局方式和计算结果而改变。
Public Function ComputeCosts(rSize As Range, rFamily As Range, rCode As Range) As Double
Dim lSizeFactor As Long
Dim lFamilyFactor As Long
Dim dCodeFactor As Double
Dim rFound As Range
Const lFAMILY As Long = 0
'Size factor is a function of 0-8, namely adding 1
lSizeFactor = rSize.Value + 1
'Family factor is computed in code
If rFamily.Value = lFAMILY Then
lFamilyFactor = 3
Else
lFamilyFactor = 2
End If
'Code factor is looked up in a different sheet
Set rFound = Worksheets("Sheet2").Columns(1).Cells.Find(rCode.Value, , xlValues, xlWhole)
If Not rFound Is Nothing Then
dCodeFactor = rFound.Offset(0, 1).Value
End If
'do the math
ComputeCosts = lSizeFactor * lFamilyFactor * dCodeFactor
End Function
答案 1 :(得分:0)
感谢您的回复,他们有助于理解VBA for Excel。我刚刚将可能的值放在表中,然后使用Index函数中的Match函数来选择正确的值。