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

hunynhi

Thành viên mới
Tham gia ngày
28 Tháng năm 2019
Bài viết
10
Được thích
2
Điểm
15
Tuổi
29
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

LamNA

Thành viên tích cực
Tham gia ngày
3 Tháng sáu 2014
Bài viết
891
Được thích
705
Điểm
560
Nơi ở
Sóc Trăng
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
 

hunynhi

Thành viên mới
Tham gia ngày
28 Tháng năm 2019
Bài viết
10
Được thích
2
Điểm
15
Tuổi
29
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:

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia ngày
8 Tháng sáu 2006
Bài viết
6,646
Được thích
10,795
Điểm
1,860
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!
 

LamNA

Thành viên tích cực
Tham gia ngày
3 Tháng sáu 2014
Bài viết
891
Được thích
705
Điểm
560
Nơi ở
Sóc Trăng
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

hunynhi

Thành viên mới
Tham gia ngày
28 Tháng năm 2019
Bài viết
10
Được thích
2
Điểm
15
Tuổi
29
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:

tuyetmai.ngo

Thành viên mới
Tham gia ngày
9 Tháng tư 2019
Bài viết
16
Được thích
6
Điểm
15
Tuổi
35
Em chưa biết xài pivot
Bài đã được tự động gộp:



PIVOT RẤT HAY ĐÓ BẠN!
 

nguyenthuy13388

Thành viên thường trực
Tham gia ngày
13 Tháng một 2012
Bài viết
319
Được thích
192
Điểm
395
Nơi ở
Hải Phòng
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

AnhThu-1976

Thành viên tiêu biểu
Tham gia ngày
17 Tháng mười 2014
Bài viết
731
Được thích
116
Điểm
420
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ỳ
 

nguyenthuy13388

Thành viên thường trực
Tham gia ngày
13 Tháng một 2012
Bài viết
319
Được thích
192
Điểm
395
Nơi ở
Hải Phòng
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:
Top Bottom