sumifs 轉成 vba 語法
Dear 各位先進,我有寫了函數
[color=Red]=SUMIFS(R5:R50,O5:O50,A5,P5:P50,B5,Q5:Q50,C5)[/color]
有找了網路寫成VBA的作業,但仍不懂該如何寫VBA
是否可請教各位先進,教導一下 SUMIFS VBA 語法
感恩! 我是直接寫成
Sub S40()
For I = 5 To [a65536].End(3).Row
Cells(I, "G") = SumIfs(Cells(I, "R"), Cells(I, "O"), Cells(I, "A"), Cells(I, "P"), Cells(I, "B"), Cells(I, "Q"), Cells(I, "C"))
Next
End Sub
但有錯誤
[attach]27252[/attach] [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=99137&ptid=19757]2#[/url] [i]jsc0518[/i] [/b]
'Cells(I, "G") = SumIfs(Cells(I, "R"), Cells(I, "O"), Cells(I, "A"), Cells(I, "P"), Cells(I, "B"), Cells(I, "Q"), Cells(I, "C"))
改為
Cells(I, "G") = Application.SumIfs([R5:R50], [O5:O50], Cells(I, "A"), [P5:P50], Cells(I, "B"), [Q5:Q50], Cells(I, "C")) [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=99138&ptid=19757]3#[/url] [i]ML089[/i] [/b]
感謝您的回覆,可以使用!
再次謝謝! [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=99138&ptid=19757]3#[/url] [i]ML089[/i] [/b]
請問這樣的函數要怎麼改
=SUMIF(入庫單!$O$2:$O$1001,倉庫庫存!A4,入庫單!$R$2:$R$1001)
感謝~ = Application.SumIf(Sheet1.Range("Q:Q"), Sheet1.Cells(4, 1), Sheet1.Range("R:R")) [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=111077&ptid=19757]6#[/url] [i]rouber590324[/i] [/b]
感謝!!~~ [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=99138&ptid=19757]3#[/url] [i]ML089[/i] [/b]
Dear ML,
抱歉,可以再幫我解一下疑惑嗎?
此段為excel函數,我想把他轉VBA,因有跨工作表的問題,所以自己run不出來
[color=Red]=SUMIFS(ROUND!M2:M10000,ROUND!A2:A10000,A2)[/color]
下方是我改過的語法,但有問題
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
[attach]34470[/attach] [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117932&ptid=19757]8#[/url] [i]jsc0518[/i] [/b]
少了一個 )
Cells(I, "G") = Application.SumIfs((Sheets("ROUND").[M2:M10000]), (Sheets("ROUND").[A2:A10000]), Cells(I, "A")[color=Red])[/color] [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117936&ptid=19757]9#[/url] [i]samwang[/i] [/b]
Dear samwang,
晚上好!感謝您的回覆歐,剛用了測試OK。
再請教您一個問題
我若改成 Sumif (語法如下) ,但會發生 400 錯誤,是否可幫我解惑,哪個語法有問題
Thank you very much.
Sub Sumif()
For I = 2 To [a65536].End(3).Row
Cells(I, "G") = Application.Sumif(工作表2.Range("A"), 工作表3.Cells(I, "A"), 工作表2.Range("M:M"))
Next
End Sub
[attach]34473[/attach] [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117938&ptid=19757]10#[/url] [i]jsc0518[/i] [/b]
方便附上檔案且說明一下問題需求,謝謝 [i=s] 本帖最後由 jsc0518 於 2021-12-7 21:13 編輯 [/i]
[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117939&ptid=19757]11#[/url] [i]samwang[/i] [/b]
我希望將 F2欄位Sumif公式轉成VBA
[attach]34475[/attach]
[attach]34476[/attach] [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117940&ptid=19757]12#[/url] [i]jsc0518[/i] [/b]
請測試看看,謝謝
Sub Sumif()
For I = 2 To [a65536].End(3).Row
Cells(I, "G") = Application.Sumif(Sheets("ROUND").Range("A2:A65536"), Cells(I, "A"), Sheets("ROUND").Range("M2:M65536"))
Next
End Sub [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117941&ptid=19757]13#[/url] [i]samwang[/i] [/b]
Dear samwang,
正常可以使用,感謝您! ^^ [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117947&ptid=19757]14#[/url] [i]jsc0518[/i] [/b]
如果資料多的話,13#會比較慢一點,謝謝 [i=s] 本帖最後由 jsc0518 於 2021-12-8 15:26 編輯 [/i]
[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117950&ptid=19757]15#[/url] [i]samwang[/i] [/b]
Dear samwang,
您好!資料一多真的會跑很久,另外我套用的EXCEL檔案內有我有寫很多的函數,在執行sumif、sumifs這2個VBA語法都跑很慢,是否可以再簡化語法或是運算時間縮短呢?
Thank you.
Excel 執行VBA 時的畫面
[attach]34483[/attach]
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 [quote]回復 samwang
Dear samwang,
您好!資料一多真的會跑很久,另外我套用的EXCEL檔案內有我有寫很多的函數 ...
[size=2][color=#999999]jsc0518 發表於 2021-12-8 15:24[/color] [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117953&ptid=19757][img]http://forum.twbts.com/images/common/back.gif[/img][/url][/size][/quote]
請問方便可以附上檔案嗎?
以利測試用
謝謝 [quote]回復 samwang
Dear samwang,
您好!資料一多真的會跑很久,另外我套用的EXCEL檔案內有我有寫很多的函數 ...
[size=2][color=#999999]jsc0518 發表於 2021-12-8 15:24[/color] [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117953&ptid=19757][img]http://forum.twbts.com/images/common/back.gif[/img][/url][/size][/quote]
因為沒有附檔,只能用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 [b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117956&ptid=19757]18#[/url] [i]samwang[/i] [/b]
Dear samwang,
晚上好!感謝您的熱心回復。因主要檔案資料內容為公司的資料,所以僅能用示範檔案給您,抱歉 ><"
剛剛是RUN了一下,有錯誤訊息!
[attach]34484[/attach] [quote]回復 samwang
Dear samwang,
晚上好!感謝您的熱心回復。因主要檔案資料內容為公司的資料,所以僅能用示 ...
[size=2][color=#999999]jsc0518 發表於 2021-12-8 20:56[/color] [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117959&ptid=19757][img]http://forum.twbts.com/images/common/back.gif[/img][/url][/size][/quote]
我測試沒問題如附件,請測試看看,謝謝
頁:
[1]
2