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

[µo°Ý] ¦p¦ó´£°ª¦h±ø¥ó¥[Á`®Ä²v SUMIFS vs SUMPRODUCT vs VBA

¦^´_ 1# sunnyso

¦³·N«äªº¤ñ¸û¡A§Ú´ú¸Õµ²ªG©M§Aªº¤£¦P

1.662109375        SUMIF
9.76953125        AutoFilter
4.728515625        VBA CODE
10.07226563        SUMPRODUCT
0.654296875        ¶Wª©Hsieh
0.3359375        c_c_lai

SUMPRODUCT³ÌºC¡C¤½¦¡¸ÌCOUNTIF¤ÎSUMPRODUCT³£¬OºC­¦¤¤¨ç¼Æ

.xlsb ¶}±Ò®É¨Ã¨S¦³³qª¾¥¨¶°¦w¥þªº³qª¾¡A¶}±Ò«á¤]¥i¥H°õ¦æ¥¨¶°¡A³o¬O.xlsb ªº¯S©Ê¶Ü?
{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

¦^´_ 9# sunnyso

³o¬O¿ì¤½«Ç¹q¸£ CPU: i5-760 2.8GHz / RAM 4G / WIN7-32 / EXCEL 2007
´ú¸Õ¸ê®Æ52993µ§¡A´N¬O§AªºÀɮקڦA±N¶Wª©Hsieh¤Îc_c_lai  VBAC CODE½Æ»s¶i¨Ó¤Î°õ¦æ
1.223         SUMIF
8.074         AutoFilter
4.148         VBA CODE
6.652         SUMPRODUCT
0.574         ¶Wª©Hsieh
0.418         c_c_lai

c_c_lai ªº®É¶¡¦n¹³®t²§«Ü¤j

XLSB¶}±Ò¦³VBA¦w¥þ©Ê½T»{(¤W¦¸¦b®a¸Ì´ú¸Õ¨S¦³¥X²{¡A)


³o¬O§Ú°õ¦æªºÀÉ®×
¨â­Ó±ø¥óªº¥[Á` - Sonny.rar (505.49 KB)
{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

¦^´_ 13# sunnyso


    ¤£¥u§Ö«Ü¦h¡A0.312¬í¡A¬O³Ì§Öªº
{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

¦^´_ 13# sunnyso
  1. j = -1
  2. Do
  3. j = j + 1
  4. Loop Until Month(DataArea(m, 2)) = (j + 1)
  5. §ï¬°¤U¦¡
  6. j = Month(DataArea(m, 2)) - 1
  7. ·|§ó§Ö
½Æ»s¥N½X
{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

¦^´_ 16# sunnyso

A CODE ­×§ï¬° B CODE¡A°õ¦æ®É¶¡¥Ñ 0.257¬íÅܺC¬°1.304¬í¡AÅܱo«ÜºC
¦bVBA¤º¥Î¬¡­¶Ã¯¨ç¼Æ·|¼W¥[«Ü¦h®É¶¡
¤£ª¾VBA¤º¦³µL¨ä¥L¥i¨ú¥NMATCH¨ç¼Æ

' *** A CODE ***
i = -1
Do
i = i + 1
Loop Until DataArea(m, 1) = AllType(i)

' *** B CODE ***
i = Application.Match(DataArea(m, 1), AllType, 0) - 1
{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

¦^´_ 22# sunnyso

¥H«e³£¬Oª½±µ§Q¥ÎÀx¦s®æ¹Bºâ¦s¨ú¡A¸g¹L³o¦¸¤ñ¸û¤~¤F¸Ñ¤£¦Pªº¤è¦¡®t²§¨º»ò¤j¡A¯u±oº¡¦³¦¬Ã¬ªº¡C
©Ò¥H­n°µ¬d¸ß¹BºâÁÙ¬O­n¥þ³¡¥ýŪ¦ÜÅܼư}¦C¡A¥þ³¡­pºâ¦n¤F¦A±NÅܼư}¦C¤@¦¸©Ê«ü¦Vµ¹Àx¦s®æ¡C

°õ¦æ®É¶¡®t«Ü¦h¡A°õ¦ætest2«á·|¦º·í6¤ÀÄÁ¡A­è¦n¥i¥H³Ü¤@ªM©@°Ø¡C
test1 1.4’
test2 299.3’
{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

¦^´_ 22# sunnyso

¦p¦ó¦bSheet3°õ¦æ¥¨¶°test1¡A¸ê®Æ¼g¦ÜSheet1
§Ú¥[¤F¬õ¦â¦rµ²ªG°õ¦æ¿ù»~¡AÀ°¦£¬Ý¬Ý¿ù¦b­þ¸Ì¡A
¦bSheet1°õ¦æ¥¨¶°test1´N¥¿½T

    Sub test1()
    Dim i%, j%
    Dim Ar(1000, 1000) As Double
    For i = 0 To 1000
        For j = 0 To 1000
            Ar(i, j) = i * 4 + j
        Next j
    Next i
    Sheets("Sheet1").Range(Cells(1, 1), Cells(1001, 1001)) = Ar
End Sub

VBA Åܼư}¦C»PÀx¦s®æ­pºâ§å¦¸Åª¼g¤ñ¸û.rar (9.47 KB)
{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

¦^´_ 27# sunnyso

¦U¦¡ªº°õ¦æ®É¶¡¨ÃµL¤Ó¤j®t²§
Range(Cells(1,1),Cells(1001,1001)) À³¸Ó¬Oµ¥©ó Range("A1:ALL1000")¡A¥i¬O¤£¯à°õ¦æµLªk²z¸Ñ¡A¥u¦n°O¤U¨Ó¡C



¤U¦¡°õ¦æ¿ù»~
Sheets("Sheet1").Range(Cells(1,1),Cells(1001,1001))=Ar

¤U¦¡°õ¦æOK-1.5¬í
WithSheets("Sheet1")
.Range(.Cells(1,1),.Cells(1000,1000))=Ar
EndWith

¤U¦¡°õ¦æOK-1.5¬í
Sheets("Sheet1").Range("A1").Resize(1000,1000)=Ar

¤U¦¡°õ¦æOK-1.5¬í
Sheet1.[A1].Resize(1000,1000)=Ar

¤U¦¡°õ¦æOK-1.5¬í
Sheet1.[A1:ALL1000]=Ar

¤U¦¡°õ¦æOK-1.5¬í
Sheet1.Range("A1:ALL1000")=Ar
{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

¦^´_ 28# sunnyso

Scripting.Dictionary ¨S¦³ª½±µ¥Î°j°é¤ñ¸û¨Óªº§Ö
{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

¦^´_ 30# sunnyso

·PÁÂ!¨ü±Ð
§Aªº¸ÑÄÀ§ÚÀ´¤F
{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

        ÀR«ä¦Û¦b : ¤@­Ó¯Ê¤fªºªM¤l¡A¦pªG´«¤@­Ó¨¤«×¬Ý¥¦¡A¥¦¤´µM¬O¶êªº¡C
ªð¦^¦Cªí ¤W¤@¥DÃD