2012-03-07 37 views
0

我正在寻找一种方法让Excel找到一个实例的所有值,例如某个范围内的“ABC”,然后返回并求和相应的值。Excel - 查找选区内的所有值

我一直在寻找这样做的VBA功能,但有没有更简单的方法?

谢谢!

+0

你是什么意思“的相应值”?你的意思是你在A列中有一些值(例如ABC,DEF,GHI),并且想要求和列B中的值,但仅限于列A中的值为ABC的行? – assylias 2012-03-07 18:06:20

+0

是: ABC 1 DEF 3 ABC 3 我希望值4 – eunhealee 2012-03-07 18:17:31

回答

2

RobertMS是正确的,SUMIF函数将工作:

ABC  | 1 
DEF  | 1 
ABC  | 3 
Sum of ABC | =SUMIF(A1:A3,"ABC",B1:B3) 

如果你需要一个VBA函数找到一个范围内的所有值,那么像这样将有助于:

Public Function FindAllInRange(Source As Range, Value As String) As Collection 
    Dim Result As New Collection 
    Dim CurCell As Range 
    Dim ColIndex As Long 
    Dim RowIndex As Long 
    Dim Address As String 

    ' Iterate through columns then rows 
    For ColIndex = 1 To Source.Columns.Count 
     For RowIndex = 1 To Source.Rows.Count 
      Set CurCell = Source(RowIndex, ColIndex) 
      ' Match the value (adjust this to your needs) 
      If CurCell.Value = Value Then 
       Address = CurCell.Worksheet.Name & "!" & CurCell.Address 
       Debug.Print "Found match '" & Value & "' at: " & Address 
       Result.Add CurCell, Address 
      End If 
     Next RowIndex 
    Next ColIndex 

    Set FindAllInRange = Result 
End Function 

Public Sub TestFindAllInRange() 
    Dim Result As Collection 
    Set Result = FindAllInRange(Selection, "ABC") 
    Debug.Print "Found " & Result.Count & " cells" 
End Sub 

如果SUMIF适合您的需求,SUMIF就容易得多。如果您使用VBA函数,那么总结这些值仍有工作要做。获得结果集合的计数很容易,但您需要处理结果以进行求和。

+0

感谢张贴的VBA功能!这很好。 :d – eunhealee 2012-03-07 19:14:04

2

你看过SUMIF函数吗?听起来这样会为你做伎俩。

0

他们最灵活的和可重复使用的解决办法是从您的数据:)创建数据透视表