Board logo

標題: 請問SUMIF程式 [打印本頁]

作者: lone_tiger0303    時間: 2011-8-3 12:49     標題: 請問SUMIF程式

項目        數量                        項目        統計
A        1                        A        5
A        2                        B        2
C        2                        C        4
D        2                               
E        2                               
R        2                        統計欄是用函數SUMIF($A:$A,$E2,$B:$B)作統計       
F        2                        如何用巨集來呈現計算程式呢       
F        2                               
G        2                               
E        2                               
Y        2                               
U        2                               
I        2                               
J        2                               
H        2                               
G        2
F        2
B        2
C        2
A        2
Z        2
作者: oobird    時間: 2011-8-3 14:01

回復 1# lone_tiger0303
  1. Sub yy()
  2.     [d1].Consolidate [a1].CurrentRegion.Address(, , xlR1C1), xlSum, 1, 1
  3. End Sub
複製代碼

作者: lone_tiger0303    時間: 2011-8-3 14:43

我是新手~~所以看不太懂意思
這有一個檔案~~麻煩您協助
作者: oobird    時間: 2011-8-3 17:40

新手就更該認真點
別隨便發個與你的檔案完全兩回事的問題。
作者: lone_tiger0303    時間: 2011-8-3 17:43

oobird 老師~~抱歉~~學生知錯了
還請您不計前嫌
作者: oobird    時間: 2011-8-3 23:45

回復 5# lone_tiger0303


    跑一下這個程式
  1. Sub yy()
  2. Dim d As Object, arr, a, i%, m%
  3. Set d = CreateObject("Scripting.Dictionary")
  4. a = Range("ac16:ah" & [ah65536].End(3).Row)
  5. ReDim arr(1 To UBound(a), 1 To 3)

  6. For i = 1 To UBound(a)
  7. If d(a(i, 6)) = "" Then
  8. m = m + 1
  9. d(a(i, 6)) = m
  10. arr(m, 1) = a(i, 6)
  11. arr(m, 2) = a(i, 1)
  12. arr(m, 3) = a(i, 2)
  13. Else
  14. arr(d(a(i, 6)), 2) = arr(d(a(i, 6)), 2) + a(i, 1)
  15. arr(d(a(i, 6)), 3) = arr(d(a(i, 6)), 3) + a(i, 2)
  16. End If
  17. Next
  18. Range("aj16").Resize(m, 3) = arr
  19. End Sub
複製代碼

作者: lone_tiger0303    時間: 2011-8-4 13:25

謝謝您的幫忙
作者: lone_tiger0303    時間: 2011-8-4 15:40

oobird 老師
學生有一個巨集執行到一半會出現"型態錯誤"
不知錯在何處~~請老師不吝給予指導
作者: Hsieh    時間: 2011-8-4 16:14

回復 8# lone_tiger0303

錯誤是因為
k = Application.VLookup(m, Ay, 2)
當m在不存在於Ay時就會產生錯誤值
所以,無法在下一句中的寫入動作使用
B.Offset(, 1) = B.Offset(, -6) & "-" & k
改成
If Not IsError(k) Then B.Offset(, 1) = B.Offset(, -6) & "-" & k
作者: lone_tiger0303    時間: 2011-8-4 16:53

謝謝!程式套用後以可以使用
但101201030D22    為何無法比對套資料
請再費心給予指導
作者: Hsieh    時間: 2011-8-4 18:06

回復 10# lone_tiger0303


    VLOOKUP函數,若要模糊比對,資料庫必須是以遞增排序
請參考VLOOKUP函數說明
將第4個引數補上,讓他成為比對完全相同資料
k = Application.VLookup(m, Ay, 2, 0)
作者: lone_tiger0303    時間: 2011-8-5 12:37

謝謝~~受教了




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)