Lọc vật tư đã xuất trong tháng và tính tổng (2 người xem)

  • Thread starter Thread starter hunynhi
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

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

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
 
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

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

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

Bài viết mới nhất

Back
Top Bottom