返回列表 上一主題 發帖

[發問] SUMIF 問題

本帖最後由 n7822123 於 2018-11-23 23:16 編輯

回復 1# jesscc


VBA肯定可以,不過函數也可以達到呀

G5:
=IF(COUNTIF($C$5:$C5,C5)=1,SUMIF($C$5:$C$13,C5,$F$5:$F$13),"")

下拉

不過資料量大函數多的話,每次重算可能會卡卡的
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 n7822123 於 2018-11-23 23:44 編輯

回復 2# n7822123


VBA寫法:

Sub test()
Dim Arr, d As Object
Arr = Range([工作表1!O5], [工作表1!K5].End(xlDown))
Set d = CreateObject("scripting.dictionary")
For i = 1 To UBound(Arr): d(Arr(i, 1) & "") = d(Arr(i, 1) & "") + Arr(i, 4): Next
For i = 1 To UBound(Arr)
  Arr(i, 5) = d(Arr(i, 1) & "")
  d.Remove (Arr(i, 1))
Next i
Range([工作表1!O5], [工作表1!K5].End(xlDown)) = Arr
End Sub
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 n7822123 於 2018-11-24 00:08 編輯

回復 3# n7822123


VBA用Find寫法(更簡短)

Sub test2()
Dim Arr, i%, d As Object
Arr = Range([工作表1!O5], [工作表1!K5].End(xlDown))
Set d = CreateObject("scripting.dictionary")
For i = 1 To UBound(Arr): d(Arr(i, 1) & "") = d(Arr(i, 1) & "") + Arr(i, 4): Next
For Each xx In d.keys
  Sheets("工作表1").Columns("K").Find(xx, lookat:=xlWhole).Offset(, 4) = d(xx & "")
Next
End Sub
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

回復 6# jesscc


  準大一個迴圈的寫法比較不好理解,不過速度應該較快
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

回復 8# 准提部林


謝謝准大解釋,其實當下就看懂啦:P

准大把用過的資料覆蓋,當做累加儲存的位置,

這種寫法似乎很省記憶體空間
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

        靜思自在 : 原諒別人就是善待自己。
返回列表 上一主題