Lọc vật tư đã xuất trong tháng và tính tổng

Liên hệ QC

hunynhi

Thành viên mới
Tham gia
28/5/19
Bài viết
10
Được thích
2
Em có file xuất vật tư gốc. Yêu cầu lọc theo từng bộ phận, để xem mỗi bộ phận trong tháng tiêu hao bao nhiêu vật tư.

Anh/chị giúp e tạo vba cho file dữ liệu này đc không ạ. e đã thử lm nhiều cách vba có, a-tools có nhưng với kiến thức hạn hẹp nó chạy sai miết.
Yêu cầu là lọc các cột Tên vật tư, Đơn vị, Số lượng, Đơn giá, Thành tiền theo từng Tên bộ phận sử dụng, Tên kho.
Sau khi lọc những vật tư có tên trùng nhau sẽ tự động gộp lại và cột Số lượng, Thành tiền tự động cộng lại
 

File đính kèm

  • Tiêu hao vật tư tháng 6.xlsx
    138.4 KB · Đọc: 18
Em có file xuất vật tư gốc. Yêu cầu lọc theo từng bộ phận, để xem mỗi bộ phận trong tháng tiêu hao bao nhiêu vật tư.

Anh/chị giúp e tạo vba cho file dữ liệu này đc không ạ. e đã thử lm nhiều cách vba có, a-tools có nhưng với kiến thức hạn hẹp nó chạy sai miết.
Yêu cầu là lọc các cột Tên vật tư, Đơn vị, Số lượng, Đơn giá, Thành tiền theo từng Tên bộ phận sử dụng, Tên kho.
Sau khi lọc những vật tư có tên trùng nhau sẽ tự động gộp lại và cột Số lượng, Thành tiền tự động cộng lại
Thấy dùng pivot ổn mà bạn
 
đúng ý bạn chưa
 

File đính kèm

  • Tiêu hao vật tư tháng 6.xlsm
    262.9 KB · Đọc: 40
Thấy dùng pivot ổn mà bạn
Em chưa biết xài pivot
Bài đã được tự động gộp:

Làm sao để filter tên vật tư phụ thuộc vào tên bộ phận sd ạ?

Mình muốn làm một list cho tên bộ phận sd. Và một list cho tên vật tư với điều kiện khi tên bộ phận sd thay đổi thì list vật tư tự động cập nhật theo.

Vì tên bộ phận sd trong file này lên đến hơn 50 bộ phận.
Tổng vật tư lên đến hơn 10.000 sản phẩm.
nếu cứ coppy từng mục thả vào ô để dò thì rất lâu.

Cảm ơn bạn đã giúp <3<3
 
Lần chỉnh sửa cuối:
Vậy tên bộ phận sử dụng là nhóm từ sau dấu '-' của cột TENDTNHAN?
Mà bạn nên tạo ra bộ mã cho vật tư của bạn; Xài tên VT như vậy dễ có ngày cúng cô hồn cái file này lắm!
 
Em có file xuất vật tư gốc. Yêu cầu lọc theo từng bộ phận, để xem mỗi bộ phận trong tháng tiêu hao bao nhiêu vật tư.

Anh/chị giúp e tạo vba cho file dữ liệu này đc không ạ. e đã thử lm nhiều cách vba có, a-tools có nhưng với kiến thức hạn hẹp nó chạy sai miết.
Yêu cầu là lọc các cột Tên vật tư, Đơn vị, Số lượng, Đơn giá, Thành tiền theo từng Tên bộ phận sử dụng, Tên kho.
Sau khi lọc những vật tư có tên trùng nhau sẽ tự động gộp lại và cột Số lượng, Thành tiền tự động cộng lại
Tham khảo cách dùng pivot
 

File đính kèm

  • Tiêu hao vật tư tháng 6.xlsx
    364.3 KB · Đọc: 24
Vậy tên bộ phận sử dụng là nhóm từ sau dấu '-' của cột TENDTNHAN?
Mà bạn nên tạo ra bộ mã cho vật tư của bạn; Xài tên VT như vậy dễ có ngày cúng cô hồn cái file này lắm!
File này nó như vậy sẳng rồi. Mình không thay đổi được
(T_T)
Bài đã được tự động gộp:

Tham khảo cách dùng pivot
Cảm ơn a ạ!!
 
Lần chỉnh sửa cuối:
Em chưa biết xài pivot
Bài đã được tự động gộp:



PIVOT RẤT HAY ĐÓ BẠN!
 
Em có file xuất vật tư gốc. Yêu cầu lọc theo từng bộ phận, để xem mỗi bộ phận trong tháng tiêu hao bao nhiêu vật tư.

Anh/chị giúp e tạo vba cho file dữ liệu này đc không ạ. e đã thử lm nhiều cách vba có, a-tools có nhưng với kiến thức hạn hẹp nó chạy sai miết.
Yêu cầu là lọc các cột Tên vật tư, Đơn vị, Số lượng, Đơn giá, Thành tiền theo từng Tên bộ phận sử dụng, Tên kho.
Sau khi lọc những vật tư có tên trùng nhau sẽ tự động gộp lại và cột Số lượng, Thành tiền tự động cộng lại
bạn xem file xem đã đúng ý chưa?

Mã:
Sub loc_dl()
Dim sArr(), dArr(1 To 50000, 1 To 8), i As Long, k As Long

With Sheet1
    sArr = .Range("A2:H" & .Range("B50000").End(xlUp).Row).Value
End With
With Sheet2
    If .Range("A50000").End(xlUp).Row > 5 Then .Range("A6:H" & .Range("A50000").End(xlUp).Row).ClearContents
    For i = 1 To UBound(sArr)
        If sArr(i, 5) = .Range("B1").Value And Month(sArr(i, 1)) = .Range("B2").Value Then
            k = k + 1
            dArr(k, 1) = sArr(i, 1)
            dArr(k, 2) = sArr(i, 2)
            dArr(k, 3) = sArr(i, 4)
            dArr(k, 4) = sArr(i, 4)
            dArr(k, 5) = sArr(i, 5)
            dArr(k, 6) = sArr(i, 6)
            dArr(k, 7) = sArr(i, 7)
            dArr(k, 8) = sArr(i, 8)
        End If
    Next i
    If k = 0 Then
        MsgBox "khong co du lieu phu hop voi 2 dieu kien nay"
    Else
        .Range("A6").Resize(k, 8) = dArr
        .Range("B3").Value = "=sum(H6:H" & k & ")"
    End If
End With
End Sub
 

File đính kèm

  • Tiêu hao vật tư tháng 6.xlsb
    84.1 KB · Đọc: 30
Cái này dùng ADO ổn đó bạn
 
bạn xem file xem đã đúng ý chưa?

Mã:
Sub loc_dl()
Dim sArr(), dArr(1 To 50000, 1 To 8), i As Long, k As Long

With Sheet1
    sArr = .Range("A2:H" & .Range("B50000").End(xlUp).Row).Value
End With
With Sheet2
    If .Range("A50000").End(xlUp).Row > 5 Then .Range("A6:H" & .Range("A50000").End(xlUp).Row).ClearContents
    For i = 1 To UBound(sArr)
        If sArr(i, 5) = .Range("B1").Value And Month(sArr(i, 1)) = .Range("B2").Value Then
            k = k + 1
            dArr(k, 1) = sArr(i, 1)
            dArr(k, 2) = sArr(i, 2)
            dArr(k, 3) = sArr(i, 4)
            dArr(k, 4) = sArr(i, 4)
            dArr(k, 5) = sArr(i, 5)
            dArr(k, 6) = sArr(i, 6)
            dArr(k, 7) = sArr(i, 7)
            dArr(k, 8) = sArr(i, 8)
        End If
    Next i
    If k = 0 Then
        MsgBox "khong co du lieu phu hop voi 2 dieu kien nay"
    Else
        .Range("A6").Resize(k, 8) = dArr
        .Range("B3").Value = "=sum(H6:H" & k & ")"
    End If
End With
End Sub
Code của bạn sẽ bị lỗi như:
1/Trường hợp1:
Tại sheet1 xóa tất cả các dòng (xóa từ dòng 3 trở xuống, chỉ chừa dòng 1 và 2)
Sang sheet loc, ở ô B2 chọn 1 tháng bất kỳ

1/Trường hợp2:
Tại sheet1 xóa tất cả các dòng (xóa từ dòng 2 trở xuống , chỉ chừa dòng 1(tiêu đề))
Sang sheet loc, ở ô B2 chọn 1 tháng bất kỳ
 
Code của bạn sẽ bị lỗi như:
1/Trường hợp1:
Tại sheet1 xóa tất cả các dòng (xóa từ dòng 3 trở xuống, chỉ chừa dòng 1 và 2)
Sang sheet loc, ở ô B2 chọn 1 tháng bất kỳ

1/Trường hợp2:
Tại sheet1 xóa tất cả các dòng (xóa từ dòng 2 trở xuống , chỉ chừa dòng 1(tiêu đề))
Sang sheet loc, ở ô B2 chọn 1 tháng bất kỳ
oki. vậy bạn chờ câu trả lời khác vậy.:victory::victory::victory:
Bài đã được tự động gộp:

bạn xem file xem đã đúng ý chưa?

Mã:
Sub loc_dl()
Dim sArr(), dArr(1 To 50000, 1 To 8), i As Long, k As Long

With Sheet1
    sArr = .Range("A2:H" & .Range("B50000").End(xlUp).Row).Value
End With
With Sheet2
    If .Range("A50000").End(xlUp).Row > 5 Then .Range("A6:H" & .Range("A50000").End(xlUp).Row).ClearContents
    For i = 1 To UBound(sArr)
        If sArr(i, 5) = .Range("B1").Value And Month(sArr(i, 1)) = .Range("B2").Value Then
            k = k + 1
            dArr(k, 1) = sArr(i, 1)
            dArr(k, 2) = sArr(i, 2)
            dArr(k, 3) = sArr(i, 4)
            dArr(k, 4) = sArr(i, 4)
            dArr(k, 5) = sArr(i, 5)
            dArr(k, 6) = sArr(i, 6)
            dArr(k, 7) = sArr(i, 7)
            dArr(k, 8) = sArr(i, 8)
        End If
    Next i
    If k = 0 Then
        MsgBox "khong co du lieu phu hop voi 2 dieu kien nay"
    Else
        .Range("A6").Resize(k, 8) = dArr
        .Range("B3").Value = "=sum(H6:H" & k & ")"
    End If
End With
End Sub
Xin sửa lại code phần chữ đỏ
Mã:
Sub loc_dl()
Dim sArr(), dArr(1 To 50000, 1 To 8), i As Long, k As Long

With Sheet1
    sArr = .Range("A2:H" & .Range("B50000").End(xlUp).Row).Value
End With
With Sheet2
    If .Range("A50000").End(xlUp).Row > 5 Then .Range("A6:H" & .Range("A50000").End(xlUp).Row).ClearContents
    For i = 1 To UBound(sArr)
        If sArr(i, 5) = .Range("B1").Value And Month(sArr(i, 1)) = .Range("B2").Value Then
            k = k + 1
            dArr(k, 1) = sArr(i, 1)
            dArr(k, 2) = sArr(i, 2)
            dArr(k, 3) = sArr(i, 3)
            dArr(k, 4) = sArr(i, 4)
            dArr(k, 5) = sArr(i, 5)
            dArr(k, 6) = sArr(i, 6)
            dArr(k, 7) = sArr(i, 7)
            dArr(k, 8) = sArr(i, 8)
        End If
    Next i
    If k = 0 Then
        MsgBox "khong co du lieu phu hop voi 2 dieu kien nay"
    Else
        .Range("A6").Resize(k, 8) = dArr
        .Range("B3").Value = "=sum(H6:H" & k + 5 & ")"
    End If
End With
End Sub
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom