返回列表 上一主題 發帖

sumifs 轉成 vba 語法

回復 23# samwang
Dear samwang,
OK,可以用。在與您請教一下,執行後H1欄位的"VBA"都會變成空白。
是否可以修訂?



Sumif-VBA-V2-ok-可用.rar (21.67 KB)
Just do it.

TOP

回復 22# jsc0518

Arr-->Brr
Brr(i, 1) = xD(Brr(i, 1) & "")

TOP

回復 20# samwang
Dear samwang,
早上好,可以幫我看一下附加檔案嗎?
我有實際依據需求,調整了excel欄位位置,以及修改過您的VBA
可是在工作表"Analysis"內的H欄位卻是帶出空白
可以幫我看內容哪裡有誤嗎?
感恩!


    1111.rar (21.77 KB)
Just do it.

TOP

回復 20# samwang
Dear samwang,
您好!您所附的檔案測試正常。我改了您的VBA至我的EXCEL上,有問題,畫面如下

紅字是我改過的
----------------------------------------------------------------------
Sub test22()
Dim Arr, Brr, xD, i&, T$
Set xD = CreateObject("Scripting.Dictionary")
Tm = Timer
Arr = [繳庫量!g1].CurrentRegion
For i = 2 To UBound(Arr)
    T = Arr(i, 1)
    xD(T) = Val(xD(T)) + Val(Arr(i, 13))
Next
With Sheets("Analysis")
    Brr = .Range(.[a1], .[a65536].End(3))
    For i = 1 To UBound(Brr)
        Brr(i, 1) = xD(Arr(i, 1) & "")
    Next
    .[g1].Resize(UBound(Brr)) = Brr
End With
MsgBox Timer - Tm
End Sub
----------------------------------------------------------------------



Just do it.

TOP

回復  samwang
Dear samwang,
晚上好!感謝您的熱心回復。因主要檔案資料內容為公司的資料,所以僅能用示 ...
jsc0518 發表於 2021-12-8 20:56


我測試沒問題如附件,請測試看看,謝謝

1111_1208.zip (21.17 KB)

TOP

回復 18# samwang
Dear samwang,
晚上好!感謝您的熱心回復。因主要檔案資料內容為公司的資料,所以僅能用示範檔案給您,抱歉 ><"
剛剛是RUN了一下,有錯誤訊息!

Just do it.

TOP

回復  samwang
Dear samwang,
您好!資料一多真的會跑很久,另外我套用的EXCEL檔案內有我有寫很多的函數 ...
jsc0518 發表於 2021-12-8 15:24


因為沒有附檔,只能用12#的檔案去寫,請測試看看,謝謝

Sub test()
Dim Arr, Brr, xD, i&, T$
Set xD = CreateObject("Scripting.Dictionary")
Tm = Timer
Arr = [ROUND!a1].CurrentRegion
For i = 2 To UBound(Arr)
    T = Arr(i, 1)
    xD(T) = Val(xD(T)) + Val(Arr(i, 13))
Next
With Sheets("Sumifs")
    Brr = .Range(.[a1], .[a65536].End(3))
    For i = 1 To UBound(Brr)
        Brr(i, 1) = xD(Arr(i, 1) & "")
    Next
    .[g1].Resize(UBound(Brr)) = Brr
End With
MsgBox Timer - Tm
End Sub

TOP

回復  samwang
Dear samwang,
您好!資料一多真的會跑很久,另外我套用的EXCEL檔案內有我有寫很多的函數 ...
jsc0518 發表於 2021-12-8 15:24


請問方便可以附上檔案嗎?
以利測試用
謝謝

TOP

本帖最後由 jsc0518 於 2021-12-8 15:26 編輯

回復 15# samwang
Dear samwang,
您好!資料一多真的會跑很久,另外我套用的EXCEL檔案內有我有寫很多的函數,在執行sumif、sumifs這2個VBA語法都跑很慢,是否可以再簡化語法或是運算時間縮短呢?
Thank you.

Excel 執行VBA 時的畫面
1111.jpg


Sub Sumif()

For I = 2 To [a65536].End(3).Row
Cells(I, "H") = Application.Sumif(Sheets("ROUND").Range("A2:A65536"), Cells(I, "A"), Sheets("ROUND").Range("M2:M65536"))
Next

End Sub







Sub Sumifs()

For I = 2 To [a65536].End(3).Row
Cells(I, "G") = Application.Sumifs((Sheets("ROUND").[M2:M10000]), (Sheets("ROUND").[A2:A10000]), Cells(I, "A"))
Next

End Sub
Just do it.

TOP

回復 14# jsc0518

如果資料多的話,13#會比較慢一點,謝謝

TOP

        靜思自在 : 人事的艱難與琢磨,就是一種考驗。
返回列表 上一主題