如何根据一个范围内不同细胞的渗透和值求和一个范围内的特定细胞?

时间:2018-08-02 18:28:58

标签: excel excel-vba sum

此功能的目标是根据一个范围内其他单元格的值和位置,对一个范围内的特定单元格求和。

这是一张图片,因此更清晰:

enter image description here

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

我想我在所有符合条件的单元格加起来的部分中缺少了一些东西。

谢谢您的帮助。

1 个答案:

答案 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