VBA功能能够搜索细胞吗?

时间:2014-02-07 20:29:47

标签: excel vba excel-vba

回归故事

在我的工作中,我们使用桌面日历来跟踪发生的大量随机细节:每个人的每日时间,发送的报告类型和数量等。为了帮助我们填写一些表格,我的老板决定他想创建一个月的电子表格,并尽可能保持最新状态。他在本月开始前去度假,所以我一直在接替他的职责。我注意到的一点是他硬连线计算总计(每个人的总小时数,发送的总报告数等),所以当我改变1月到2月的日期时,我们有一些剩余的导致3月。我删除了它们然后公式都抛出#REF!错误因为它。

如何设置数据很简单:

AB    2.50
CD    3.50
EF    8.00
...ETC...

AB,CD,EF在一列中,值在相邻列中。

问题

我试着让它运转起来,没有运气,所以我想这可能是不可能的,但我想我会问一群比这更了解这个主题的人:我做的一个功能我接受一个字符串参数来搜索,如果找到它,它会移动到相邻的单元格并将该值添加到运行总计中。然后它会在结尾处返回该数字,因此对此函数的调用类似于

=getTotals("AB")  ' this would display whatever the total for AB is

但是当我尝试这一切时,我得到的只是一个#VALUE!单元格中的错误。

有没有什么方法可以让我按照我想要的方式工作,而不使用完整的宏?

功能

我让这个功能起作用,我想要

Function getTotal(rng As Range, search As String) As Double

    Dim r As Range

    getTotal = 0

    For Each r In rng
        If r.Value = search Then
            getTotal = getTotal + r.Offset(0, 1).Value
        End If
    Next

End Function

如此调用:= getTotal(A1:D2,“AD”)

1 个答案:

答案 0 :(得分:4)

SUMIF可以满足您的需求:

=SUMIF(A1:A10,"AB",B1:B10)

假设你的' AB'值位于A列,第1-10行,数值位于B列,第1-10行。

SUMIF中的第一个参数是要检查的范围,第二个参数是必须满足的条件(搜索条件),第3个[可选]参数是从中获取值的相应范围总结。