Gán công thức tìm dữ liệu theo điều kiện có sẵn (1 người xem)

Liên hệ QC

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

Sonychuong

Thành viên mới
Tham gia
15/5/20
Bài viết
10
Được thích
4
Hi các bậc thầy cô, A/C trong Diễn đàn.
Nhờ các thầy cô, anh chị trong diễn đàn giúp em công thức hoặc code VBA với yêu cầu như sau . Mặc dù em thử đủ các loại công thức (như Vlookup, Lookup, Match, index, sumif, column, OFFSET . . . . .từ cơ bản đến lồng công thức) nhưng kết quả không ra như mong muốn .

Yêu cầu như sau :
01. Cần C.thức =>Ô I7 (Khối lượng) cần tìm giá trị bên mảng "List danh sach'!$E$3:$AJ$15" với điều kiện 1 là "B7", điều kiện 2 là "C7", điều kiện 3 là "E7"
* Tất cả 3 điều kiện 1,2,3 điều tham chiếu tìm bên mảng "List danh sach'!$E$3:$AJ$15", trong đó :
+ Điều kiện 1 "B7" có thể xuất hiện trong mảng "List danh sach'!$E$3:$AJ$15" ở các cột SUB 01, hay SUB 02, hay SUB 03,…. Hay SUB n lần.
+ Điều kiện 2 "C7" cố định trong mảng "List danh sach'!$E$3:$AJ$3" ở dòng Excel 3 tương ứng các SUB 01, hay SUB 02, hay SUB 03,…. Hay SUB n lần.
+ Điều kiện 3 "E7" cố định trong mảng "List danh sach'!$B:$B" ở cột Excel $B:$B

02. Cần C.thức
=>Ô J7 (Thành tiền) cần tìm giá trị bên mảng "List danh sach'!$E$3:$AJ$15" tương tự như Ô I7

Thanks rất nhiều .
 

File đính kèm

Hi các bậc thầy cô, A/C trong Diễn đàn.
Nhờ các thầy cô, anh chị trong diễn đàn giúp em công thức hoặc code VBA với yêu cầu như sau . Mặc dù em thử đủ các loại công thức (như Vlookup, Lookup, Match, index, sumif, column, OFFSET . . . . .từ cơ bản đến lồng công thức) nhưng kết quả không ra như mong muốn .

Yêu cầu như sau :
01. Cần C.thức =>Ô I7 (Khối lượng) cần tìm giá trị bên mảng "List danh sach'!$E$3:$AJ$15" với điều kiện 1 là "B7", điều kiện 2 là "C7", điều kiện 3 là "E7"
* Tất cả 3 điều kiện 1,2,3 điều tham chiếu tìm bên mảng "List danh sach'!$E$3:$AJ$15", trong đó :
+ Điều kiện 1 "B7" có thể xuất hiện trong mảng "List danh sach'!$E$3:$AJ$15" ở các cột SUB 01, hay SUB 02, hay SUB 03,…. Hay SUB n lần.
+ Điều kiện 2 "C7" cố định trong mảng "List danh sach'!$E$3:$AJ$3" ở dòng Excel 3 tương ứng các SUB 01, hay SUB 02, hay SUB 03,…. Hay SUB n lần.
+ Điều kiện 3 "E7" cố định trong mảng "List danh sach'!$B:$B" ở cột Excel $B:$B

02. Cần C.thức
=>Ô J7 (Thành tiền) cần tìm giá trị bên mảng "List danh sach'!$E$3:$AJ$15" tương tự như Ô I7

Thanks rất nhiều .
Bạn thử tham khảo trước ở đây hoặc ở đây xem sao.
 
Hi các bậc thầy cô, A/C trong Diễn đàn.
Nhờ các thầy cô, anh chị trong diễn đàn giúp em công thức hoặc code VBA với yêu cầu như sau . Mặc dù em thử đủ các loại công thức (như Vlookup, Lookup, Match, index, sumif, column, OFFSET . . . . .từ cơ bản đến lồng công thức) nhưng kết quả không ra như mong muốn .

Yêu cầu như sau :
01. Cần C.thức =>Ô I7 (Khối lượng) cần tìm giá trị bên mảng "List danh sach'!$E$3:$AJ$15" với điều kiện 1 là "B7", điều kiện 2 là "C7", điều kiện 3 là "E7"
* Tất cả 3 điều kiện 1,2,3 điều tham chiếu tìm bên mảng "List danh sach'!$E$3:$AJ$15", trong đó :
+ Điều kiện 1 "B7" có thể xuất hiện trong mảng "List danh sach'!$E$3:$AJ$15" ở các cột SUB 01, hay SUB 02, hay SUB 03,…. Hay SUB n lần.
+ Điều kiện 2 "C7" cố định trong mảng "List danh sach'!$E$3:$AJ$3" ở dòng Excel 3 tương ứng các SUB 01, hay SUB 02, hay SUB 03,…. Hay SUB n lần.
+ Điều kiện 3 "E7" cố định trong mảng "List danh sach'!$B:$B" ở cột Excel $B:$B

02. Cần C.thức
=>Ô J7 (Thành tiền) cần tìm giá trị bên mảng "List danh sach'!$E$3:$AJ$15" tương tự như Ô I7

Thanks rất nhiều .
Tại sao lại phải dàn cột ra cho mỗi Công ty, rất khó theo dõi và tổng hợp dữ liệu, nếu bạn có 100 công ty thì phải bao nhiêu cột cho đủ?
Bảng của bạn có thể gộp lại đơn giản như thế này, có thể lọc tạo thành 1 bảng Báo cáo bằng VBA.
Capture.PNG
 
Tại sao lại phải dàn cột ra cho mỗi Công ty, rất khó theo dõi và tổng hợp dữ liệu, nếu bạn có 100 công ty thì phải bao nhiêu cột cho đủ?
Bảng của bạn có thể gộp lại đơn giản như thế này, có thể lọc tạo thành 1 bảng Báo cáo bằng VBA.
View attachment 255896
tại vì cột "Code SP" (Cột B) và cột "Tên sản phẩm" (Cột C) là cố định rồi, không tăng giảm gì nhiều, nhưng các "SUB" mỗi công ty có thể cả 100 cty cung cấp 1 sản phẩm (vd như : Táo có thể cty A cấp, Cty B cấp, Cty C cấp . . . .) . Vì vậy không thể gộp như bảng dưới của bạn được .
Trong File điển hình 1 số sản phẩm thôi. thực tế file có thể 5000 - 10000 dòng sản phẩm thì cứ mỗi cty cấp thì phải chèn dòng nữa thì không ổn .

Cảm ơn .
 
tại vì cột "Code SP" (Cột B) và cột "Tên sản phẩm" (Cột C) là cố định rồi, không tăng giảm gì nhiều, nhưng các "SUB" mỗi công ty có thể cả 100 cty cung cấp 1 sản phẩm (vd như : Táo có thể cty A cấp, Cty B cấp, Cty C cấp . . . .) . Vì vậy không thể gộp như bảng dưới của bạn được .
Trong File điển hình 1 số sản phẩm thôi. thực tế file có thể 5000 - 10000 dòng sản phẩm thì cứ mỗi cty cấp thì phải chèn dòng nữa thì không ổn .

Cảm ơn .
Mỗi công ty có 8 cột, vậy nếu bạn có có 100 nhà cung cấp thì bạn sẽ tạo 800 cột? Vậy nếu bạn cần xem thông tin của 1 công ty nào đó thì làm thế nào
Còn theo bảng dưới mình đã gộp thì bạn muốn xem thông tin nào chỉ cần AutoFilter rồi chọn công ty là xong.
Còn về số dòng thì càng không phải vấn đề, tại tiêu đề bạn đã nói về code VBA rồi, cho dù lên đến 1tr dòng cũng OK
 
Mỗi công ty có 8 cột, vậy nếu bạn có có 100 nhà cung cấp thì bạn sẽ tạo 800 cột? Vậy nếu bạn cần xem thông tin của 1 công ty nào đó thì làm thế nào
Còn theo bảng dưới mình đã gộp thì bạn muốn xem thông tin nào chỉ cần AutoFilter rồi chọn công ty là xong.
Còn về số dòng thì càng không phải vấn đề, tại tiêu đề bạn đã nói về code VBA rồi, cho dù lên đến 1tr dòng cũng OK
Xem giúp trả lời
Mỗi công ty có 8 cột, vậy nếu bạn có có 100 nhà cung cấp thì bạn sẽ tạo 800 cột? Vậy nếu bạn cần xem thông tin của 1 công ty nào đó thì làm thế nào => đây là đề bài mình đang cần giải bên sheet "Sheet cần lấy dữ liệu", chỉ cần paste "tên cty, code phụ, code SP" thì sẽ ra hết
Còn theo bảng dưới mình đã gộp thì bạn muốn xem thông tin nào chỉ cần AutoFilter rồi chọn công ty là xong. => Mình đã làm rồi, insert để nhập dữ liệu không nổi
Còn về số dòng thì càng không phải vấn đề, tại tiêu đề bạn đã nói về code VBA rồi, cho dù lên đến 1tr dòng cũng OK => VBA ok hết, nhưng cần giải bài toán theo hàng ngang chứ không phải theo hàng dọc.

Cảm ơn .
 
Xem giúp trả lời
Mỗi công ty có 8 cột, vậy nếu bạn có có 100 nhà cung cấp thì bạn sẽ tạo 800 cột? Vậy nếu bạn cần xem thông tin của 1 công ty nào đó thì làm thế nào => đây là đề bài mình đang cần giải bên sheet "Sheet cần lấy dữ liệu", chỉ cần paste "tên cty, code phụ, code SP" thì sẽ ra hết
Còn theo bảng dưới mình đã gộp thì bạn muốn xem thông tin nào chỉ cần AutoFilter rồi chọn công ty là xong. => Mình đã làm rồi, insert để nhập dữ liệu không nổi
Còn về số dòng thì càng không phải vấn đề, tại tiêu đề bạn đã nói về code VBA rồi, cho dù lên đến 1tr dòng cũng OK => VBA ok hết, nhưng cần giải bài toán theo hàng ngang chứ không phải theo hàng dọc.

Cảm ơn .
Thôi được rồi , bạn cứ giữ cách làm của bạn đi, hồi mới đi làm mình cũng toàn làm hàng ngang như vậy mà :yes:
 
Hi các bậc thầy cô, A/C trong Diễn đàn.
Nhờ các thầy cô, anh chị trong diễn đàn giúp em công thức hoặc code VBA với yêu cầu như sau . Mặc dù em thử đủ các loại công thức (như Vlookup, Lookup, Match, index, sumif, column, OFFSET . . . . .từ cơ bản đến lồng công thức) nhưng kết quả không ra như mong muốn .

Yêu cầu như sau :
01. Cần C.thức =>Ô I7 (Khối lượng) cần tìm giá trị bên mảng "List danh sach'!$E$3:$AJ$15" với điều kiện 1 là "B7", điều kiện 2 là "C7", điều kiện 3 là "E7"
* Tất cả 3 điều kiện 1,2,3 điều tham chiếu tìm bên mảng "List danh sach'!$E$3:$AJ$15", trong đó :
+ Điều kiện 1 "B7" có thể xuất hiện trong mảng "List danh sach'!$E$3:$AJ$15" ở các cột SUB 01, hay SUB 02, hay SUB 03,…. Hay SUB n lần.
+ Điều kiện 2 "C7" cố định trong mảng "List danh sach'!$E$3:$AJ$3" ở dòng Excel 3 tương ứng các SUB 01, hay SUB 02, hay SUB 03,…. Hay SUB n lần.
+ Điều kiện 3 "E7" cố định trong mảng "List danh sach'!$B:$B" ở cột Excel $B:$B

02. Cần C.thức
=>Ô J7 (Thành tiền) cần tìm giá trị bên mảng "List danh sach'!$E$3:$AJ$15" tương tự như Ô I7

Thanks rất nhiều .
Bạn thử dùng công thức này
Mã:
Khối lượng=IFERROR(VLOOKUP($E9,'List danh sach'!$B$5:$AJ$15,MAX(IF('List danh sach'!$E$5:$AJ$15=$B9,COLUMN('List danh sach'!$E$4:$AJ$15)))+MATCH($C9,'List danh sach'!$F$3:$H$3,0)-1,0),0)
Thành tiền=IFERROR(VLOOKUP($E9,'List danh sach'!$B$5:$AJ$15,MAX(IF('List danh sach'!$E$5:$AJ$15=$B9,COLUMN('List danh sach'!$E$4:$AJ$15)))+MATCH($C9,'List danh sach'!$F$3:$H$3,0)+3,0),0)
 
tại vì cột "Code SP" (Cột B) và cột "Tên sản phẩm" (Cột C) là cố định rồi, không tăng giảm gì nhiều, nhưng các "SUB" mỗi công ty có thể cả 100 cty cung cấp 1 sản phẩm (vd như : Táo có thể cty A cấp, Cty B cấp, Cty C cấp . . . .) . Vì vậy không thể gộp như bảng dưới của bạn được .
Trong File điển hình 1 số sản phẩm thôi. thực tế file có thể 5000 - 10000 dòng sản phẩm thì cứ mỗi cty cấp thì phải chèn dòng nữa thì không ổn .

Tổ chức dữ liệu theo hàng ngang như vậy nhìn thì thấy gọn thật nhưng nó chỉ là để báo cáo, để xem, chứ không lấy nó làm cơ sở dữ liệu được (CSDL) vì không được chuẩn hoá. (Bạn muốn biết chuẩn hoá CSDL như thế nào thì có rất nhiều tài liệu trên mạng để đọc nhé).
Đối với Excel tôi không chắc nhưng đối với các CSDL quan hệ khác (từ Access trở lên) thì việc truy vấn nhiều dòng ít cột vẫn nhanh hơn, càng nhiều cột, tốc độ truy vấn càng giảm
Tại sao số cột Excel ít hơn chứ không bằng số dòng Excel là cũng có nguyên nhân của nó.
CSDL cả triệu dòng là chuyện bình thường. Khi cần truy vấn thì người viết code sẽ biết cách giới hạn cục dữ liệu cần truy vấn chứ không phải lúc nào cũng phải xử lý cả triệu dòng.
Một khi CSDL chuẩn hoá thì code kiết đi theo nó cũng nhanh gọn hơn, đơn giản hơn. Một khi bạn đã rành viết code xử lý dữ liệu thì sẽ tự ngộ ra cách tổ chức dữ liệu như thế nào code sẽ dễ hơn, xử lý nhanh hơn...
Góp ý về mặt kỹ thuật vậy thôi còn file là của bạn, khả năng hiểu đến đâu thì xây dựng CSDL đến đó, cuối cùng là hoàn thành mục tiêu thôi.

(PS: cũng thắc mắc là có Cty nào là có nhiều sản phẩm (SKU) dữ vậy, 10.000 sản phẩm.)
 
Tổ chức dữ liệu theo hàng ngang như vậy nhìn thì thấy gọn thật nhưng nó chỉ là để báo cáo, để xem, chứ không lấy nó làm cơ sở dữ liệu được (CSDL) vì không được chuẩn hoá. (Bạn muốn biết chuẩn hoá CSDL như thế nào thì có rất nhiều tài liệu trên mạng để đọc nhé).
Đối với Excel tôi không chắc nhưng đối với các CSDL quan hệ khác (từ Access trở lên) thì việc truy vấn nhiều dòng ít cột vẫn nhanh hơn, càng nhiều cột, tốc độ truy vấn càng giảm
Tại sao số cột Excel ít hơn chứ không bằng số dòng Excel là cũng có nguyên nhân của nó.
CSDL cả triệu dòng là chuyện bình thường. Khi cần truy vấn thì người viết code sẽ biết cách giới hạn cục dữ liệu cần truy vấn chứ không phải lúc nào cũng phải xử lý cả triệu dòng.
Một khi CSDL chuẩn hoá thì code kiết đi theo nó cũng nhanh gọn hơn, đơn giản hơn. Một khi bạn đã rành viết code xử lý dữ liệu thì sẽ tự ngộ ra cách tổ chức dữ liệu như thế nào code sẽ dễ hơn, xử lý nhanh hơn...
Góp ý về mặt kỹ thuật vậy thôi còn file là của bạn, khả năng hiểu đến đâu thì xây dựng CSDL đến đó, cuối cùng là hoàn thành mục tiêu thôi.

(PS: cũng thắc mắc là có Cty nào là có nhiều sản phẩm (SKU) dữ vậy, 10.000 sản phẩm.)
Cảm ơn tư vấn về CSDL từ bạn .
Có thể theo hàng dọc (dòng) thì tối ưu hơn so với hàng ngang (cột) khi áp dụng công thức hay CSDL hay VBA, nhưng vì cty mình số dòng cố định theo chuẩn ban đầu, chỉ phát sinh số cột nếu thêm 1 cty mới (trong file để là SUB) . Trong file có "SUB n" là cty thứ n thực chất cũng chỉ từ 10 -15 cty cung cấp 1 sản phẩm "Code SP" chứ không lên tới 100 hay 1000 cty đâu, mình để thứ n là sẽ phát sinh thêm 1 hay 2 hay 3 SUB sau "SUB 03".
Đây chỉ là file điển hình lấy dữ liệu để giải quyết vấn đề đưa ra dựa trên file đính kèm.

Cảm ơn .
 
Chủ bài đăng nên cho vô đề mục này: https://www.giaiphapexcel.com/diendan/forums/những-vấn-đề-chung.3/

(/ề cách quản lý số liệu theo mình nên tách ra thành 2 trang có quan hệ với nhau như:

(Trang chung)
Code SPTên sản phẩmĐ.Vị
RE0001Táokg
RE0002Nhokg
RE0003kg
RE0004Đàokg
RE0005Mậnkg
RE0006Na Đài Loankg
RE0007Lựu Perukg
RE0008Việt quấtkg
RE0009Sầu riêngkg
RE0010Dâu Hàn Quốckg

Trang chi tiết:
Code SPCtiH.đồngP.sinh tăngP.sinh
giảm
RE0001Cty A50120,000---
RE0002Cty A10050180,000-
RE0001Cty B120(100)150,000-
RE0002Cty B500200,000-
RE0006Cty B3080,000-
RE0007Cty B20160,000-
RE0008Cty B80250,000-
RE0003Cty C120300,000---
RE0004Cty C35280,000---
 
Lần chỉnh sửa cuối:
Bạn thử dùng công thức này
Mã:
Khối lượng=IFERROR(VLOOKUP($E9,'List danh sach'!$B$5:$AJ$15,MAX(IF('List danh sach'!$E$5:$AJ$15=$B9,COLUMN('List danh sach'!$E$4:$AJ$15)))+MATCH($C9,'List danh sach'!$F$3:$H$3,0)-1,0),0)
Thành tiền=IFERROR(VLOOKUP($E9,'List danh sach'!$B$5:$AJ$15,MAX(IF('List danh sach'!$E$5:$AJ$15=$B9,COLUMN('List danh sach'!$E$4:$AJ$15)))+MATCH($C9,'List danh sach'!$F$3:$H$3,0)+3,0),0)
Cảm ơn @hocexcel_1991 .
Công thức đã chạy theo yêu cầu của file .
Topic xin đóng ở đây .
Mình đăng bài có nhiều sai xót và không đúng theo qui định. Sẽ rút kinh nghiệm .
cảm ơn tất cả anh chị em đã hỗ trợ và đóng góp ý kiến
File gán công thức đính kèm .
 

File đính kèm

Web KT

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

Back
Top Bottom