Hiện tại em có sheet BC TH: các Anh Chị có thể làm công thức cộng dồn tất cả số lượng theo từng mã hàng trong sheet DATA-CT vào sheet BC TH, có rất nhiều mã hàng trùng nhau em chưa nghĩ ra được công thức nào, mong các anh chị giúp đỡ.Trong sheet BC THANG em nhờ các Anh Chị lọc chi tiết từ sheet DATA-CT theo từng thángEm cảm ơn các Anh Chị rất nhiều!
Hiện tại em có sheet BC TH: các Anh Chị có thể làm công thức cộng dồn tất cả số lượng theo từng mã hàng trong sheet DATA-CT vào sheet BC TH, có rất nhiều mã hàng trùng nhau em chưa nghĩ ra được công thức nào, mong các anh chị giúp đỡ.Trong sheet BC THANG em nhờ các Anh Chị lọc chi tiết từ sheet DATA-CT theo từng thángEm cảm ơn các Anh Chị rất nhiều!
leonguyenz có thể giải thích dùm em 2 dòng lệnh đó được kg??? em có xem qua rồi nhưng vẫn chưa hiểu. Còn sheet BC THANG em có thể dùng những hàm gì để làm. Cảm ơn rất nhiều!!!
leonguyenz có thể giải thích dùm em 2 dòng lệnh đó được kg??? em có xem qua rồi nhưng vẫn chưa hiểu. Còn sheet BC THANG em có thể dùng những hàm gì để làm. Cảm ơn rất nhiều!!!
Hàm OFFSET, tham chiếu sheet DATA CT ô D6, xuống 1 dòng (là D7), không di chuyển cột (,,), hàm COUNTA đếm những ô chứa dữ liệu để làm chiều cao (số dòng) của vùng, như vậy ta có MaVT là D719, nếu thêm dữ liệu ở D20 thì COUNTA thay đổi, lúc đó MaVT là D720, Name động là ở chỗ đó.
Công thức trích lọc duy nhất:
Hàm CHOOSE, hàm này chọn giá trị trong danh sách 2 giá trị là rỗng ("") và kết quả của hàm INDEX.
Hàm LOOKUP của một chuỗi (REPT("z",255) trong danh sách gồm 2 giá trị của CHOOSE sẽ trả về: nếu kết quả INDEX là chuỗi thì trả về chuỗi, nếu INDEX lỗi hoặc số thì trả về rỗng (""). Mục đích là bẫy lỗi thôi, bạn có thể đặt lại công thức: =IFERROR(INDEX(...),"").
Hàm INDEX: MaVT, lấy vị trí theo hàm MATCH.
Hàm MATCH: MATCH(1,INDEX((COUNTIF($A$4:A4,MaVT)=0)*(MaVT<>""),0),0) tìm đúng vị trí của 1 trong dãy là kết quả trả về của INDEX((COUNTIF($A$4:A4,MaVT)=0)*(MaVT<>""),0). Sử dụng COUNTIF để "thêm dần" giá trị đếm được, nhưng trả về kết quả = 0 để lấy giá trị ngược (không thỏa mã, tức là FALSE), như vậy giá trị tìm thấy đầu tiên sẽ cho kết quả quả TRUE (1), là vị trí cần tìm để MATCH(1, ...). Bạn đưa con trỏ vào công thức và bôi đen vùng (COUNTIF($A$4:A4,MaVT)=0)*(MaVT<>"") và nhấn F9 để xem list kết quả, xem từng dòng sẽ hiểu thôi.
---
Báo cáo theo tháng, bạn đặt Name Dk (điều kiện để lấy vị trí dòng thỏa mãn là tháng cần báo cáo):
Hàm OFFSET, tham chiếu sheet DATA CT ô D6, xuống 1 dòng (là D7), không di chuyển cột (,,), hàm COUNTA đếm những ô chứa dữ liệu để làm chiều cao (số dòng) của vùng, như vậy ta có MaVT là D719, nếu thêm dữ liệu ở D20 thì COUNTA thay đổi, lúc đó MaVT là D720, Name động là ở chỗ đó.
Công thức trích lọc duy nhất:
Hàm CHOOSE, hàm này chọn giá trị trong danh sách 2 giá trị là rỗng ("") và kết quả của hàm INDEX.
Hàm LOOKUP của một chuỗi (REPT("z",255) trong danh sách gồm 2 giá trị của CHOOSE sẽ trả về: nếu kết quả INDEX là chuỗi thì trả về chuỗi, nếu INDEX lỗi hoặc số thì trả về rỗng (""). Mục đích là bẫy lỗi thôi, bạn có thể đặt lại công thức: =IFERROR(INDEX(...),"").
Hàm INDEX: MaVT, lấy vị trí theo hàm MATCH.
Hàm MATCH: MATCH(1,INDEX((COUNTIF($A$4:A4,MaVT)=0)*(MaVT<>""),0),0) tìm đúng vị trí của 1 trong dãy là kết quả trả về của INDEX((COUNTIF($A$4:A4,MaVT)=0)*(MaVT<>""),0). Sử dụng COUNTIF để "thêm dần" giá trị đếm được, nhưng trả về kết quả = 0 để lấy giá trị ngược (không thỏa mã, tức là FALSE), như vậy giá trị tìm thấy đầu tiên sẽ cho kết quả quả TRUE (1), là vị trí cần tìm để MATCH(1, ...). Bạn đưa con trỏ vào công thức và bôi đen vùng (COUNTIF($A$4:A4,MaVT)=0)*(MaVT<>"") và nhấn F9 để xem list kết quả, xem từng dòng sẽ hiểu thôi.
---
Báo cáo theo tháng, bạn đặt Name Dk (điều kiện để lấy vị trí dòng thỏa mãn là tháng cần báo cáo):
Bạn leonguyenz ơi.
Mình thấy (Sheet BC THANG) ô C7 cho kết quả là mã vt chứ không phải là tên vật tư. bạn xem lại giúp mình. Mình cũng đang dựa vào file của bạn conmuaxanh01 để sử dụng.
leonguyenz có thể xem dùm em sheet BCTHANG:Công thức đúng như anh nói nhưng sao lại kg ra được số liệu.
Nhân tiện xem cho em sheet CT: cột mã VTTB với cột Tên VTTB đoạn code trên em gắn vào chạy thì OK nhưng khi mình nhập mã hoặc tên không có trong danh mục thì sẽ bị lỗi nó sẽ không nhảy theo nhau nữa, anh có cách nào hạn chế kg cho nhập ngoài danh mục được kg?Em cũng nhờ anh lun trong phần mã hàng hoặc tên hàng làm sao khi đánh 1 ký tự ví dụ như chữ "C" thì nó sẽ lọc những mã hàng hoặc tên hàng có chữ "C" còn những cái khác thì kg hiện, vật tư thiết bị thì nhiều kg có bọ lọc đó tìm cũng hơi cực . Em cảm ơn anh trước nha!!!
Bạn leonguyenz ơi.
Mình thấy (Sheet BC THANG) ô C7 cho kết quả là mã vt chứ không phải là tên vật tư. bạn xem lại giúp mình. Mình cũng đang dựa vào file của bạn conmuaxanh01 để sử dụng.
leonguyenz có thể xem dùm em sheet BCTHANG:Công thức đúng như anh nói nhưng sao lại kg ra được số liệu.
Nhân tiện xem cho em sheet CT: cột mã VTTB với cột Tên VTTB đoạn code trên em gắn vào chạy thì OK nhưng khi mình nhập mã hoặc tên không có trong danh mục thì sẽ bị lỗi nó sẽ không nhảy theo nhau nữa, anh có cách nào hạn chế kg cho nhập ngoài danh mục được kg?Em cũng nhờ anh lun trong phần mã hàng hoặc tên hàng làm sao khi đánh 1 ký tự ví dụ như chữ "C" thì nó sẽ lọc những mã hàng hoặc tên hàng có chữ "C" còn những cái khác thì kg hiện, vật tư thiết bị thì nhiều kg có bọ lọc đó tìm cũng hơi cực . Em cảm ơn anh trước nha!!!
Bạn xem lại bài #8, thay vì dùng cột MaVT, bạn chèn thêm hàm OFFSET để lấy cột khác: OFFSET(MaVT,,1) có nghĩa là từ cột MaVT "dời" qua phải 1 cột (Tên hàng), nếu thay số 1 là -1 tức là "dời" qua trái 1 cột (ngày chứng từ).
Khi nhập mã VTTB thì bạn phải nhập ngày, vì điều kiện để báo cáo tháng phải lấy cột ngày chứng từ.
Sheet BCTHANG theo cách chỉ dẫn cũa anh em đã làm thêm được cột mã với cột tên thiết bị luôn rồi em nhờ anh xem lại cho em phần sheet CT như thế này: Nhân tiện xem cho em sheet CT: cột mã VTTB với cột Tên VTTB đoạn code trên em gắn vào chạy thì OK nhưng khi mình nhập mã hoặc tên không có trong danh mục thì sẽ bị lỗi nó sẽ không nhảy theo nhau nữa, anh có cách nào hạn chế kg cho nhập ngoài danh mục được kg?Em cũng nhờ anh lun trong phần mã hàng hoặc tên hàng làm sao khi đánh 1 ký tự ví dụ như chữ "C" thì nó sẽ lọc những mã hàng hoặc tên hàng có chữ "C" còn những cái khác thì kg hiện, vật tư thiết bị thì nhiều kg có bọ lọc đó tìm cũng hơi cực . Em cảm ơn anh trước nha!!!
Sheet BCTHANG theo cách chỉ dẫn cũa anh em đã làm thêm được cột mã với cột tên thiết bị luôn rồi em nhờ anh xem lại cho em phần sheet CT như thế này: Nhân tiện xem cho em sheet CT: cột mã VTTB với cột Tên VTTB đoạn code trên em gắn vào chạy thì OK nhưng khi mình nhập mã hoặc tên không có trong danh mục thì sẽ bị lỗi nó sẽ không nhảy theo nhau nữa, anh có cách nào hạn chế kg cho nhập ngoài danh mục được kg?Em cũng nhờ anh lun trong phần mã hàng hoặc tên hàng làm sao khi đánh 1 ký tự ví dụ như chữ "C" thì nó sẽ lọc những mã hàng hoặc tên hàng có chữ "C" còn những cái khác thì kg hiện, vật tư thiết bị thì nhiều kg có bọ lọc đó tìm cũng hơi cực . Em cảm ơn anh trước nha!!!
Trường hợp lọc theo chữ cái phức tạp, nếu dùng công thức thì phải Sort dữ liệu nguồn, khi cập nhập phải sort lại, mất thời gian và dễ sai sót, nếu dùng VBA thì bạn tìm kiếm từ khóa "Data Validation trong VBA" thử xem, code tôi viết chưa rành, nên chỉ giúp bạn đến đây thôi.
ơi.
Cho mình hỏi ở Sheet ( DATA CT ): khi nhập hoặc xuất ở ô J7, N7 thì tự động tính tồn của vật tư cùng mã vt.
VD: Cát xây tô nhập về 3 lần( 10+15+5 = 30 m3 ), xuất 3 lần. Tại ô tồn O sẽ tự động tính tồn của lần nhập xuất cuối.