Làm ơn chỉ dùm cách lọc sơ đồ

Liên hệ QC

hovang

Thành viên mới
Tham gia
15/8/06
Bài viết
3
Được thích
0
Nghề nghiệp
Quan ly kho
Chào các AE,

Tôi đang gặp 1 vấn đề khó khăn trong việc lọc sơ đồ cho 1 sản phẩm để kiểm kho cuối năm. (file kèm theo)!

Mong AE nào có kinh nghiệm trong việc quản lý kho giúp tôi với.

Cám ơn nhiều.
 

File đính kèm

  • LOC SO DO.xls
    15 KB · Đọc: 29
Chào bạn,

Mình nghĩ không còn cách nào khác là phải dùng hàm tự tạo (User-defined Function, hay UDF). Hơn nữa phải dựa vào công thức mảng (array formula). Nếu bạn không quen với những khái niệm này thì sẽ hơi khó để hiểu cách sử dụng. Nhưng mình sẽ cố giải thích.


Trước tiên, bạn hãy đặt tên cho các cột trên bảng Sơ Đồ của file. Ví dụ, A3-A13 gọi là ma_sp, B3-13 gọi là ten_sp, v.v.

Sau đó mở VBA (Alt-F11), bạn tìm tên file của mình ở trong project window bên tay trái, nếu nó không có module thì bạn phải nhấn chuột phải vào tiêu đề của project và chọn Insert - Module.

Sau đó bạn copy và paste đoạn code dưới đây vào module window hiện lên bên phải:

Mã:
Option Explicit

Public Function ConcSep_Array(InArray() As Variant, Optional Sep As String) As String
On Error Resume Next
Dim OutStr As String
Dim i, j As Integer
For i = LBound(InArray, 1) To UBound(InArray, 1)
    For j = LBound(InArray, 2) To UBound(InArray, 2)
        If InArray(i, j) <> "" Then OutStr = OutStr & InArray(i, j) & Sep
    Next j
Next i
ConcSep_Array = Left(OutStr, Len(OutStr) - Len(Sep))
End Function

Đây là hàm tự tạo do mình viêt, viết tắt của cụm từ concatenate with separator (dùng cho array), có thể nối các cụm từ tùy chọn thể array với nhau được ngăn chia bởi một nhóm ký tự do chính người sử dụng chọn. Ví dụ:

Concsep_Array({A1, A2, A3}, ", ") sẽ cho ra kết quả "A1, A2, A3"

Bạn có thể sử dụng công thức này trong ô E2 và E3 của bảng Tổng:
E2: =ConcSep_Array(IF(((ma_sp=A3)*(ten_sp=B3)*(don_vi=C3)=1);so_do;"");",")
E3: =ConcSep_Array(IF(((ma_sp=A4)*(ten_sp=B4)*(don_vi=C4)=1);so_do;"");",")

Lưu ý khi gõ xong công thức phải nhấn Ctrl - Shift- Enter thay vì Enter không.
 

File đính kèm

  • Loc so do.xls
    37.5 KB · Đọc: 27
Trước tiên tôi xin được cám ơn bạn
jubinell va viehoai đã tích cực trả lời giúp tôi. Tuy nhiên có một vấn đề như thế này, nếu dò đến mã 11001 thì vùng chọn là E3:E7, mã 11002 thì vùng chọn là E10:E13...tương tự cho trên 1000 sản phẩm nửa. Thì công việc này vẫn còn thủ công lắm, sao không làm 1 vùng chọn chung E3:En. Chẳng hạn tôi lấy từ E3: E100 thì kq không đúng !


(tôi có gửi file kèm theo..)

Mong được các AE giúp đở!

 

File đính kèm

  • Loc so do.xls
    42 KB · Đọc: 8
Bạn tham khảo theo đề tài mình đã nhờ các anh chị GPE giúp đỡ nhé
http://www.giaiphapexcel.com/forum/showthread.php?t=30617
Bạn viethoai thân mến! Cái này không dùng Join được đâu ---> Vì nối chuổi có điều kiện mà
Trước tiên tôi xin được cám ơn bạn
jubinell va viehoai đã tích cực trả lời giúp tôi. Tuy nhiên có một vấn đề như thế này, nếu dò đến mã 11001 thì vùng chọn là E3:E7, mã 11002 thì vùng chọn là E10:E13...tương tự cho trên 1000 sản phẩm nửa. Thì công việc này vẫn còn thủ công lắm, sao không làm 1 vùng chọn chung E3:En. Chẳng hạn tôi lấy từ E3: E100 thì kq không đúng !


(tôi có gửi file kèm theo..)

Mong được các AE giúp đở!

Tặng bạn hàm JoinIf này:
PHP:
Function JoinIf(LValue, LRange As Range, ColIndex As Long, Optional Sep = "") As String
  Dim Clls As Range, Temp
  On Error Resume Next
  If Not IsEmpty(LValue) Then
    With CreateObject("Scripting.Dictionary")
      For Each Clls In LRange.Resize(, 1)
        If Clls.Value = LValue Then .Add Clls.Address, Clls(, ColIndex)
      Next
      JoinIf = Join(.Items, Sep)
    End With
  End If
End Function
Cách dùng gần giống với hàm VLOOKUP
 

File đính kèm

  • JoinIfUDF.xls
    35 KB · Đọc: 62
Chào bạn hovang,

Nếu theo cách của mình làm mình thấy OK. Để mình gửi file cho bạn nha (ko hiểu sao ko up được lên diễn đàn ): )
 

File đính kèm

  • ConcSep_Array.xls
    34.5 KB · Đọc: 37
Hay quá, cám ơn các AE diễn đàn giaiphapexcel rất nhiều !
Tôi sẽ áp dụng vào việc kiểm kê cuối năm của mình.
 
Chào bạn hovang,

Nếu theo cách của mình làm mình thấy OK. Để mình gửi file cho bạn nha (ko hiểu sao ko up được lên diễn đàn ): )
Xin lỗi bạn,bạn không thông báo gửi qua E-mail mình nên không biết,bây giờ mới post lên mong bạn thông cảm.
 

File đính kèm

  • LOC SO DO.Jubinell.xls
    39.5 KB · Đọc: 19
Web KT

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

Back
Top Bottom