返回列表 上一主題 發帖

請教如何..取同姓名和加總成交金...感謝

請教如何..取同姓名和加總成交金...感謝

.................資料-------
日期        姓名        成交金
2月1日        aaa               1000
2月2日        bbb        2000
2月3日        aaa                3000
2月4日        ccc               4000
2月5日        aaa               5000
2月7日        aaa               1000
2月8日        bbb        2000
2月9日        aaa               3000
2月10日ccc                4000
2月11日aaa         5000
               
---        變成------       
        姓名        成交金
        aaa         18000
        bbb        4000
        ccc                8000
也就是 同姓名作加總
yes show me money

回復 1# alims

字典標準用法
  1. Sub XX()
  2. Dim Ar(), d As Object
  3. Set d = CreateObject("scripting.dictionary")
  4. Ar = Range("A1:C" & [C2].End(xlDown).Row)
  5. For i = 1 To UBound(Ar)
  6.   If Not d.exists(Ar(i, 2)) Then d.Add Ar(i, 2), Ar(i, 3) Else d(Ar(i, 2)) = d(Ar(i, 2)) + Ar(i, 3)
  7. Next i
  8. [E:F] = ""
  9. [E1].Resize(d.Count, 1) = Application.Transpose(d.keys)
  10. [F1].Resize(d.Count, 1) = Application.Transpose(d.items)
  11. End Sub
複製代碼

TOP

回復 2# register313


    好厲害!!!  謝謝了
yes show me money

TOP

回復 1# alims
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Rng As Range
  4.     Set Rng = Range("A1").CurrentRegion         '設置資料區
  5.     Rng.Columns(2).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("IV1:IV2"), CopyToRange:=Range("F1"), Unique:=True
  6.                                                 '進階篩選 出不重復的姓名到 F欄
  7.     Range("G1") = "成交金"
  8.     With Range(Range("G2"), Range("F1").End(xlDown).Offset(, 1))
  9.         .FormulaR1C1 = "=SUMIF(" & Rng.Columns(2).Address(, , 0) & ", RC[-1] ," & Rng.Columns(3).Address(, , 0) & ")"
  10.                     '設下公式
  11.         .Value = .Value   '公式轉換為值 也可以不轉換
  12.     End With
  13. End Sub
複製代碼

TOP

回復 3# alims
合併彙算專門解決這類問題
學海無涯_不恥下問

TOP

回復 3# alims

小計(姓名欄位要先排序)

TOP

回復 6# register313

用過了 謝謝
yes show me money

TOP

感謝各位提供的資料…測試都可以執行…
但是出現一個問題…
執行register313大的程式時…要求定義 i …可能是我的版本比較低吧!
走急的人看不見地上的釘子, 煩惱的人享受不到幸福的日子。

TOP

利用 SUM函數+矩陣 就可以了~
= { sum ((姓名欄位:姓名欄位 = "某人") * (成交金欄位:成交金欄位))  }

test.zip (2.25 KB)

TOP

回復 9# mistery
不用陣列,還有也可以
=SUMIF($B$2:$B$11,E2,$C$2:$C$11)
=SUMPRODUCT(($B$2:$B$11=E2)*($C$2:$C$11))

TOP

        靜思自在 : 口說好話、心想好意、身行好事。
返回列表 上一主題