此功能的目标是根据一个范围内其他单元格的值和位置,对一个范围内的特定单元格求和。
这是一张图片,因此更清晰:
M列的答案为= 2 + 4 + 6 + 9 = 21 P列的答案应为= 3 + 7 + 10 = 20
“ Licitante 1,Licitante 2,...”下有20种不同的“ Precio,Precio2,Precio3 ...”,这就是我使用CASES的原因。
回顾一下,如果“ M”列中的单元格> 0,则该函数应选择同一行中“ H”列中的单元格,对所述范围内的所有单元格都执行此操作,然后将其添加。
到目前为止,我已经拥有了:
Function ImporteLic(lic As String)
Dim cell As Range
Dim i As Integer
Select Case lic
Case "Licitante 1"
For Each cell In Range("M13:M50")
If ActiveCell.Value > 0 Then
ActiveCell.Offset(0, -5) = i
End If
Next cell
ImporteLic = worksheetfuntion.Sum(i)
End Select
End Function
我想我在所有符合条件的单元格加起来的部分中缺少了一些东西。
谢谢您的帮助。
答案 0 :(得分:0)
您发布的代码有很多问题。试试这个,看看是否可行。
Function ImporteLic(lic As String) As Double
With Worksheets("Sheet1") 'change name
Dim col As Long
col = .Rows(1).Find(lic, lookat:=xlWhole).Column
Dim checkRange As Range
Set checkRange = .Range(.Cells(3, col), .Cells(50, col))
Dim sumRange As Range
Set sumRange = .Range("H3:H50")
Dim addEmUp As Double
addEmUp = WorksheetFunction.SumIf(checkRange, ">0", sumRange)
End With
ImporteLic = addEmUp
End Function