返回列表 上一主題 發帖

[發問] 用VBA 做Sumif 問題

[發問] 用VBA 做Sumif 問題

我有一個工作表,需要將類型加類。需要用VBA 來自動分類及加總。

例如A至G欄, 每一個組別, Job 不同的話,我會自行 用 4列分隔開, 同時要將Item 處 分類加總起來。

在 D欄 列出Item 的類別, 其後在Line 就用sumif 加總, qty 處也是。


J至P欄是結果顯示,我做例子說明 而已,平時只會有A至G欄。

想用VBA 自動在最後自己填入分類及進行分類加總。


例如M6至O7 是要用VBA 全自動得出結果。 因為平時只有A欄至G欄,所以我想設定一個按鈕點擊,則在D6至F7 欄 得出 M6至O7 的同時結果。

以下幾個Job 都是一樣。

Item , D欄最多有三個類別。如果Job 只有一個類別 則完全不用動作。 (LV0998),

最後是 LV0999, 如果Item 只有一個 就只是進行加總就可以,不用另外加一個Item 名稱進去。

非常感謝大家。


VBA sumif.zip (8.77 KB)

回復 1# stephenlee
請問 stephenlee大大 Job 除了以下這些還有其它的嗎?
LV1024-1-4
LJG0430-1-6
LV0997-1-8
LV0998-1-1
LV0999-1-2

TOP

本帖最後由 samwang 於 2021-5-16 21:03 編輯

回復 1# stephenlee


  請測試看看,謝謝
Sub test()
Dim Arr, xD, Ar(), T, UT, T2%, T3%, i&, M%, N%
Set xD = CreateObject("Scripting.Dictionary")
R = [a65536].End(3).Row + 1
Arr = Range("a1:g" & R)
For i = 2 To UBound(Arr)
    T = Arr(i, 4): T2 = Arr(i, 5): T3 = Arr(i, 6): UT = Arr(i - 1, 4)
    If T = "" And UT <> "" Then GoTo 98
    If T = "" Then GoTo 99
    If xD.Exists(T & "") Then
        M = xD(T & ""): Ar(2, M) = Ar(2, M) + T2: Ar(3, M) = Ar(3, M) + T3
    Else
        N = N + 1: xD(T & "") = N
        ReDim Preserve Ar(1 To 3, 1 To N)
        If Left(Arr(i, 1), 6) <> "LV0999" Then Ar(1, N) = T
        Ar(2, N) = T2: Ar(3, N) = T3
    End If
98:  If T = "" Then
        If M > 0 Then Cells(i, 4).Resize(N, 3) = Application.Transpose(Ar)
        N = 0: M = 0: Set xD = Nothing: Erase Ar
        Set xD = CreateObject("Scripting.Dictionary")
    End If
99: Next
End Sub

TOP

回復  stephenlee
請問 stephenlee大大 Job 除了以下這些還有其它的嗎?
LV1024-1-4
LJG0430-1-6
LV099 ...
軒云熊 發表於 2021-5-15 21:43



有的,有其他,不是上面的資料了,每次不同。 有大大已經幫我處理好,謝謝你花時間幫忙。

TOP

回復  stephenlee


  請測試看看,謝謝
Sub test()
Dim Arr, xD, Ar(), T, UT, T2%, T3%, i&, M%, N ...
samwang 發表於 2021-5-16 21:00



我謝謝你才對,完全符合要求,謝謝你花了這麼多時間幫我研究,感謝。

TOP

回復 4# stephenlee

我也是順便練習 我們互相幫助 有多餘的時間 順便幫我測試看看有沒有問題 感謝
VBA sumif0520.rar (35.18 KB)

TOP

        靜思自在 : 一個缺口的杯子,如果換一個角度看它,它仍然是圓的。
返回列表 上一主題