Trợ giúp code VBA để làm nhẹ thời gian tính toán của bảng tính

Liên hệ QC
Hi bạn @HieuCD
Mình gặp xíu rắc rối với sheet Báo cáo Nvl (PNNVL), mình sử dụng công thức như công thức bên sheet tổng hợp hợp đồng, đã trích xuất được thông tin của cột " tên nhãn hiệu....), tuy nhiên nó chỉ liệt kê ra trong quý đó, nhưng không gom tên cùng 1 loại lại với nhau VÀ khi gom thì gom cả tổng số lượng và tổng thành tiền luôn. Bạn có thể sửa dùm mình vấn đề này không.
 

File đính kèm

  • theodoihs (1).xlsm
    989.6 KB · Đọc: 15
Hi bạn @HieuCD
Mình gặp xíu rắc rối với sheet Báo cáo Nvl (PNNVL), mình sử dụng công thức như công thức bên sheet tổng hợp hợp đồng, đã trích xuất được thông tin của cột " tên nhãn hiệu....), tuy nhiên nó chỉ liệt kê ra trong quý đó, nhưng không gom tên cùng 1 loại lại với nhau VÀ khi gom thì gom cả tổng số lượng và tổng thành tiền luôn. Bạn có thể sửa dùm mình vấn đề này không.
các công thức chỉnh lại để tạo báo cáo NVL chính, còn vật liệu phụ làm tương tự
sheet NLC
Mã:
N7 =IF(AND(M7=PNNLC!$H$9,COUNTIF($D$6:D6,D7)=0),MAX($N$5:N6)+1,"")
sheet PNNLC
hàm Vlookup nặng hơn Offset và Index, nhiệm vụ cột phụ là để dùng 2 hàm nầy cho nhẹ file
Mã:
F18 =IF($L18="","",OFFSET(NLC!D$1,$L18-1,))
G18 =IF($L18="","",OFFSET(NLC!F$1,$L18-1,))
tổng nhiều điều kiện thì dùng hàm SumifS
Mã:
I8 =SUMIFS(NLC!$G$7:$G$999,NLC!$D$7:$D$999,F18,NLC!$M$7:$M$999,$H$9)
K8 =SUMIFS(NLC!$I$7:$I$999,NLC!$D$7:$D$999,F18,NLC!$M$7:$M$999,$H$9)
 
các công thức chỉnh lại để tạo báo cáo NVL chính, còn vật liệu phụ làm tương tự
sheet NLC
Mã:
N7 =IF(AND(M7=PNNLC!$H$9,COUNTIF($D$6:D6,D7)=0),MAX($N$5:N6)+1,"")
sheet PNNLC
hàm Vlookup nặng hơn Offset và Index, nhiệm vụ cột phụ là để dùng 2 hàm nầy cho nhẹ file
Mã:
F18 =IF($L18="","",OFFSET(NLC!D$1,$L18-1,))
G18 =IF($L18="","",OFFSET(NLC!F$1,$L18-1,))
tổng nhiều điều kiện thì dùng hàm SumifS
Mã:
I8 =SUMIFS(NLC!$G$7:$G$999,NLC!$D$7:$D$999,F18,NLC!$M$7:$M$999,$H$9)
K8 =SUMIFS(NLC!$I$7:$I$999,NLC!$D$7:$D$999,F18,NLC!$M$7:$M$999,$H$9)

Sao mình nhập vào rồi, mà khi thay đổi quý ii, quý 3 thì ko có kết quả nhỉ, chỉ nhận được quý i, 2015, còn lại các quý khác của năm 2015, 2016,2017 không có kết quả
 
Lần chỉnh sửa cuối:
Sao mình nhập vào rồi, mà khi thay đổi quý ii, quý 3 thì ko có kết quả nhỉ, chỉ nhận được quý i, 2015, còn lại các quý khác của năm 2015, 2016,2017 không có kết quả
mình quên để ý thời gian, bạn chỉnh lại công thức
Mã:
N7= =IF(AND(M7=PNNLC!$H$9,COUNTIFS($D$6:D6,D7,$M$6:M6,M7)=0),MAX($N$5:N6)+1,"")
 
mình quên để ý thời gian, bạn chỉnh lại công thức
Mã:
N7= =IF(AND(M7=PNNLC!$H$9,COUNTIFS($D$6:D6,D7,$M$6:M6,M7)=0),MAX($N$5:N6)+1,"")
Thanks bạn @HieuCD rất nhiều,

Mình nghe bạn nói công thức Bodau.... rất nặng, bạn có biện pháp thay thế công thức đó ko, hoặc làm cách nào để tạo list chọn tên NVL, tên số hợp đồng từ danh sách mà không để dòng trống nhiều trong list không?
 
Thanks bạn @HieuCD rất nhiều,

Mình nghe bạn nói công thức Bodau.... rất nặng, bạn có biện pháp thay thế công thức đó ko, hoặc làm cách nào để tạo list chọn tên NVL, tên số hợp đồng từ danh sách mà không để dòng trống nhiều trong list không?
cụ thể bạn muốn làm gì ở ô nào
 
Cụ thể là ở sheet HDKT, mình muốn lấy danh sách khách hàng sheet KH làm list chọn để lấy số hđ, và danh sách này không để trống hàng nhiều (vd: ở sheet KH, CỘT D 11: D400 chẵn hạn, mình mới nhập từ D11: D200, khi tạo list validation thì sẽ có khoảng trống từ D200:D400, như vậy khi chọn tên khách hàng sẽ rất khó),
ý mình muốn là khi tạo list chỉ hiện từ D11:D200, nếu ở cột D khách hàng mình nhập thêm D201...D210 thì list bên HDKT cũng sẽ hiện đến ô D210.

thêm ý nữa nếu có thể, đó là mình đánh ký tự vào ô G để tìm kiếm tên nhanh trong list danh sách khách hàng chẵn hạn, vì khi danh sách dài, mà muốn tìm thì kéo từng tí một để xem cũng hơi khó.
 
Cụ thể là ở sheet HDKT, mình muốn lấy danh sách khách hàng sheet KH làm list chọn để lấy số hđ, và danh sách này không để trống hàng nhiều (vd: ở sheet KH, CỘT D 11: D400 chẵn hạn, mình mới nhập từ D11: D200, khi tạo list validation thì sẽ có khoảng trống từ D200:D400, như vậy khi chọn tên khách hàng sẽ rất khó),
ý mình muốn là khi tạo list chỉ hiện từ D11:D200, nếu ở cột D khách hàng mình nhập thêm D201...D210 thì list bên HDKT cũng sẽ hiện đến ô D210.

thêm ý nữa nếu có thể, đó là mình đánh ký tự vào ô G để tìm kiếm tên nhanh trong list danh sách khách hàng chẵn hạn, vì khi danh sách dài, mà muốn tìm thì kéo từng tí một để xem cũng hơi khó.
mình thấy công thức tên List_Kh để tạo data validation cũng tạm ổn, bạn chỉ cần đổi cột A thành cột đúng
để tạo list theo ký tự nhập thì bạn phải mở khóa macro mới làm được
 
Đổi cột A thành cột đúng là sao bạn
 
Đổi cột A thành cột đúng là sao bạn
file hiện tại bạn dùng cột A, trình bày của bạn là cột D, nên mình không biết bạn muốn dùng cột nào
Cụ thể là ở sheet HDKT, mình muốn lấy danh sách khách hàng sheet KH làm list chọn để lấy số hđ, và danh sách này không để trống hàng nhiều (vd: ở sheet KH, CỘT D 11: D400 chẵn hạn, mình mới nhập từ D11: D200, khi tạo list validation thì sẽ có khoảng trống từ D200:D400, như vậy khi chọn tên khách hàng sẽ rất khó),
ý mình muốn là khi tạo list chỉ hiện từ D11:D200, nếu ở cột D khách hàng mình nhập thêm D201...D210 thì list bên HDKT cũng sẽ hiện đến ô D210.
 
file hiện tại bạn dùng cột A, trình bày của bạn là cột D, nên mình không biết bạn muốn dùng cột nào
Cột A là mình coppy dữ liệu từ sheet KH, và sheet HDKT để đưa qua sheet DULIEU, sau đó dùng hàm BODAU để xóa khoảng trắng trong list danh sách cần lấy (đó là list khách hàng, và list số hợp đồng), nhưng theo bạn thì công thức này nặng, nên mình mới muốn bạn giúp mình tối ưu công thức để cho nhẹ xử lý hơn ấy
 
Cột A là mình coppy dữ liệu từ sheet KH, và sheet HDKT để đưa qua sheet DULIEU, sau đó dùng hàm BODAU để xóa khoảng trắng trong list danh sách cần lấy (đó là list khách hàng, và list số hợp đồng), nhưng theo bạn thì công thức này nặng, nên mình mới muốn bạn giúp mình tối ưu công thức để cho nhẹ xử lý hơn ấy
hàm BODAU để xóa khoảng trắng trong list danh sách cần lấy ? là gì mình không hiểu, tại sao không tạo list trực tiếp từ sheet khách hàng bỏ luôn sheet DULIEU
 
hàm BODAU để xóa khoảng trắng trong list danh sách cần lấy ? là gì mình không hiểu, tại sao không tạo list trực tiếp từ sheet khách hàng bỏ luôn sheet DULIEU
Xin lỗi, cái hàm Bodau đó mình cũng ko biết là làm để làm gì nữa :)), mình thử cái list_kh, với list_hd thì đã tránh được dòng trắng, giờ chỉ còn 1 cái nữa là có cách nào dùng list_kh vs list_hđ mà khi mình đánh ký tự vào tự lọc những kết quả giống để mình chọn cho nhanh không? kiểu search ấy: VD mình đánh chữ Công ty thì nó chỉ liệt kê chững khách hàng có chữ công ty, mình đánh chữ doanh nghiệp thì chỉ liệt kê tên những doanh nghiệp để chọn nhanh không?
 
Xin lỗi, cái hàm Bodau đó mình cũng ko biết là làm để làm gì nữa :)), mình thử cái list_kh, với list_hd thì đã tránh được dòng trắng, giờ chỉ còn 1 cái nữa là có cách nào dùng list_kh vs list_hđ mà khi mình đánh ký tự vào tự lọc những kết quả giống để mình chọn cho nhanh không? kiểu search ấy: VD mình đánh chữ Công ty thì nó chỉ liệt kê chững khách hàng có chữ công ty, mình đánh chữ doanh nghiệp thì chỉ liệt kê tên những doanh nghiệp để chọn nhanh không?
bạn đọc lại bài #28
 
@HieuCD
hàm vlookup của một mã khách trong sheet HDKT muốn thay = hàm offset đc không vậy bạn
 
@HieuCD
hàm vlookup của một mã khách trong sheet HDKT muốn thay = hàm offset đc không vậy bạn
Nếu có thứ tự dòng thì dùng hàm Offset hay Index, trường hợp nầy dùng hàm Vlookup là hợp lý vì chưa biết thứ tự dòng lấy dữ liệu
dĩ nhiên vẫn dùng hàm offset hoặc index được khi lồng với hàm match tìm thứ tự dòng
 
à được rồi
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom