2012-03-07 92 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

他們最靈活的和可重複使用的解決辦法是從您的數據:)創建數據透視表