Nhờ các Anh Chị làm giúp tổng hợp số lượng của các mã hàng (1 người xem)

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

conmuaxanh01

Thành viên mới
Tham gia
30/12/11
Bài viết
37
Được thích
1
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!
 

File đính kèm

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!
Làm dùm bạn sheet BC TH.
Đặt Name Mã VT:
Mã:
=OFFSET('DATA CT'!$D$6,1,,COUNTA('DATA CT'!$D$7:$D$1000))
Trích lọc duy nhất Mã VT qua Sheet BC TH, A5:
Mã:
=LOOKUP(REPT("z",255),CHOOSE({1;2},"",INDEX(MaVT,MATCH(1,INDEX((COUNTIF($A$4:A4,MaVT)=0)*(MaVT<>""),0),0))))
Còn lại thì bạn dùng VLOOKUP và SUMIF để lấy dữ liệu.
 

File đính kèm

Làm dùm bạn sheet BC TH.
Đặt Name Mã VT:
Mã:
=OFFSET('DATA CT'!$D$6,1,,COUNTA('DATA CT'!$D$7:$D$1000))
Trích lọc duy nhất Mã VT qua Sheet BC TH, A5:
Mã:
=LOOKUP(REPT("z",255),CHOOSE({1;2},"",INDEX(MaVT,MATCH(1,INDEX((COUNTIF($A$4:A4,MaVT)=0)*(MaVT<>""),0),0))))
Còn lại thì bạn dùng VLOOKUP và SUMIF để lấy dữ liệ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!!!
Name MaVT (Name động):
Mã:
=OFFSET('DATA CT'!$D$6,1,,COUNTA('DATA CT'!$D$7:$D$1000))
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à D7:D19, nếu thêm dữ liệu ở D20 thì COUNTA thay đổi, lúc đó MaVT là D7:D20, Name động là ở chỗ đó.
Công thức trích lọc duy nhất:
Mã:
=LOOKUP(REPT("z",255),CHOOSE({1;2},"",INDEX(MaVT,MATCH(1,INDEX((COUNTIF($A$4:A4,MaVT)=0)*(MaVT<>""),0),0))))
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):
Mã:
=IF(MONTH(OFFSET(MaVT,,-1))=MONTH('BC THANG'!$D$2),ROW(MaVT)-6,"")
Công thức tại A7 (Sheet BC THANG):
Mã:
=IFERROR(INDEX(OFFSET(MaVT,,-2),SMALL(Dk,ROW($A1))),"")
Các cột còn lại lấy đúng tham chiếu cột của DATA CT là được.
Dữ liệu bên DATA CT tôi có sửa lại 1 ngày là tháng 2 để test.
 

File đính kèm

Name MaVT (Name động):
Mã:
=OFFSET('DATA CT'!$D$6,1,,COUNTA('DATA CT'!$D$7:$D$1000))
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à D7:D19, nếu thêm dữ liệu ở D20 thì COUNTA thay đổi, lúc đó MaVT là D7:D20, Name động là ở chỗ đó.
Công thức trích lọc duy nhất:
Mã:
=LOOKUP(REPT("z",255),CHOOSE({1;2},"",INDEX(MaVT,MATCH(1,INDEX((COUNTIF($A$4:A4,MaVT)=0)*(MaVT<>""),0),0))))
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):
Mã:
=IF(MONTH(OFFSET(MaVT,,-1))=MONTH('BC THANG'!$D$2),ROW(MaVT)-6,"")
Công thức tại A7 (Sheet BC THANG):
Mã:
=IFERROR(INDEX(OFFSET(MaVT,,-2),SMALL(Dk,ROW($A1))),"")
Các cột còn lại lấy đúng tham chiếu cột của DATA CT là được.
Dữ liệu bên DATA CT tôi có sửa lại 1 ngày là tháng 2 để test.

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

File đính kèm

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.
Bạn sửa lại công thức tại C7 một chút là được:
Mã:
=IFERROR(INDEX(OFFSET(MaVT,,1),SMALL(Dk,ROW($A1))),"")
 
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!!!
Sheet CT: C10 và C13, bạn sửa lại đúng dạng ngày tháng, vì nó chưa đúng nên khi đặt trong Name Dk có sử dụng hàm MONTH sẽ bị lỗi #VALUE.
 
Làm đúng theo anh hướng dẫn sheet BCTHANG đã OK rùi, còn cột mã hàng với tên hàng trong sheet CT anh xem dùm em lun nha, cảm ơn anh nhiều!!!
 
Làm đúng theo anh hướng dẫn sheet BCTHANG đã OK rùi, còn cột mã hàng với tên hàng trong sheet CT anh xem dùm em lun nha, cảm ơn anh nhiều!!!
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!!!
Data Validation: nếu List có khoảng trắng thì có thể nhập dữ liệu ngoài List, vậy nên bạn sửa lại 2 Name đặt List:
MA.MAVT:
Mã:
=OFFSET(DMMAVT!$B$11,0,0,COUNTA(DMMAVT!$B$11:$B$1000),1)
MA.TENVT:
Mã:
=OFFSET(DMMAVT!$C$11,0,0,COUNTA(DMMAVT!$C$11:$C$1000),1)
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.
 

File đính kèm

Bạn leonguyenz

ơ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.
 
Bác leonguyenz giúp em sheet BCTHANG thêm điều kiện là tháng và năm được kg? em cảm ơn!!!
Tôi nhớ là bên BCTHANG, cột Mã VTTB dùng công thức khác, INDEX liệt kê theo điều kiện, còn công thức bạn đưa vào là INDEX lọc duy nhất.
Mã:
=LOOKUP(REPT("z",255),CHOOSE({1;2},"",INDEX(MaVT,SMALL(Dk,ROW($A1)))))
 

File đính kèm

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

Back
Top Bottom