返回列表 上一主題 發帖

[發問] 請問一下函數的vba

資料不多, 可用這個:
Sub AAA()
Dim Clmn As Range
Set Clmn = [工作表2!K2].Resize([工作表2!B65536].End(xlUp).Row - 1)
Clmn = "=B2&C2"
With [工作表1!C2].Resize([工作表1!A65536].End(xlUp).Row - 1, 3)
     .Formula = "=SUMIF(工作表2!$K:$K,$A2&C$1,工作表2!$E:$E)"
     .Value = .Value
     .Replace 0, "", Lookat:=xlWhole
End With
Clmn.ClearContents
End Sub

'================================
資料很多, 用這個:
Dim xD, Arr, Brr, i&, j&, T$
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([工作表2!E1], [工作表2!B65536].End(xlUp))
For i = 2 To UBound(Arr)
    T = Arr(i, 1) & Arr(i, 2)
    xD(T) = xD(T) + Arr(i, 4)
Next i
'----------------------------
Arr = Range([工作表1!E1], [工作表1!A65536].End(xlUp))
ReDim Brr(1 To UBound(Arr) - 1, 1 To 3)
For i = 2 To UBound(Arr)
For j = 1 To 3
    T = Arr(i, 1) & Arr(1, j + 2)
    Brr(i - 1, j) = xD(T)
Next j
Next i
'----------------------------
[工作表1!C2].Resize(UBound(Arr) - 1, 3).Value = Brr
End Sub

'>>>>

TOP

回復 7# afu9240


K欄是用來做輔助公式, 利用完再清除,
將[生產批號]&[分類]連接成獨立字串, 即可利用來做SUMIF的[索引值],

因資料行數可能不確定,
SUMPRODUCT若做全欄引用, 可能使檔案卡死,
SUMIF公式的全欄引用, 效率比SUMIFS高.

TOP

        靜思自在 : 太陽光大、父母恩大、君子量大,小人氣大。
返回列表 上一主題