ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] ½Ð°Ý¦p¦ó±N³o¥y+{sum(if......,if......,))}, ¥Î¦bMacro¸Ì­±??

¥»©«³Ì«á¥Ñ Hsieh ©ó 2011-12-25 16:13 ½s¿è

¦^´_ 1# idsmchow

³o­Ó°ÝÃD¦b2007ª©¥»¥H«á´N«Ü²³æ¥ÎSUMIFS¨ç¼Æ¿ý»s¥¨¶°§Y¥i
2003ª©´N¼g­Ó¦h±ø¥ó¥[Á`¨ç¼Æ¨Ó¹B¥Î
¤@¯ë¼Ò²Õ
  1. Function SumIIF(SumRange As Range, ParamArray OtherArgs())'¦h±ø¥ó¥[Á`¨ç¼Æ¡A¥iª½±µ¹B¥Î¨ìÀx¦s®æ
  2. '»yªk:SumIIF(SumRange,·Ç«h1,·Ç«h½d³ò1,·Ç«h2,·Ç«h½d³ò2,·Ç«h3,·Ç«h½d³ò3...·Ç«hn,·Ç«h½d³òn)
  3. '·Ç«h½d³ò¤j¤p¥²¶·»PSumRange½d³ò¤j¤p¬Û¦P
  4. Dim mystr$, temp$
  5. Set dic = CreateObject("Scripting.Dictionary")
  6. For i = LBound(OtherArgs) To UBound(OtherArgs) Step 2
  7.   If mystr = "" Then mystr = OtherArgs(i) Else mystr = mystr & OtherArgs(i)
  8.   dic(i + 1) = ""
  9. Next
  10. For i = 1 To SumRange.Count
  11.     For Each ky In dic.keys
  12.       If temp = "" Then temp = OtherArgs(ky)(i) Else temp = temp & OtherArgs(ky)(i)
  13.     Next
  14.     If temp = mystr Then SumIIF = SumIIF + SumRange(i)
  15.     temp = ""
  16. Next
  17. End Function
  18. Sub ex()'¥Dµ{¦¡
  19. Dim Sr As Range
  20. With Sheets("Data")
  21. Set Sr = .Range("C2", .[C2].End(xlDown))
  22. Set cr1 = .Range("A2").Resize(Sr.Count, 1)
  23. Set cr2 = .Range("B2").Resize(Sr.Count, 1)
  24. End With
  25. With Sheets("Report")
  26. For Each c In .[E8:F8]
  27. For Each a In .Range("A:A").SpecialCells(xlCellTypeConstants)
  28.    If a = "Y" Then .Cells(a.Row, c.Column) = SumIIF(Sr, c, cr1, a.Offset(, 1), cr2)
  29. Next
  30. Next
  31. End With
  32. End Sub
½Æ»s¥N½X
formular.rar (11.79 KB)
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

        ÀR«ä¦Û¦b : °µ¦n¨Æ¤£¯à¤Ö§Ú¤@¤H¡A°µÃa¨Æ¤£¯à¦h§Ú¤@¤H¡C
ªð¦^¦Cªí ¤W¤@¥DÃD