Tìm số gần nhất trong khoảng để tính hiệu suất và số ngày làm việc (2 người xem)

  • Thread starter Thread starter thufpts
  • Ngày gửi Ngày gửi
Liên hệ QC

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

thufpts

Thành viên hoạt động
Tham gia
6/8/12
Bài viết
157
Được thích
6
Giới tính
Nam
Nghề nghiệp
Bốc vác
Dear các bác !
em có việc này rất mong các bác giúp em, trong 1 file excel em có 2 sheet.
Sheet1 cần lấy dữ liệu từ sheet2 tra về, các bác viết code giúp em trong file đính kèm em gửi.
Em giải thích như sau
Nếu muốn sản xuất 500 ở cột D3 sản phẩm sẽ cần 250 power ở cột E3 tương đương với 20% hiệu suất trung bình tại cột F3 và 1 ngày để sản xuất ở cột G3.
các cột bôi vàng là dữ liệu được lấy từ sheet 2.
Em thường làm thủ công và nói chung là phải mất 2 ngày mới điền được hết dữ liệu mệt mỏi và nản vô cùng.

Lấy cột E3 sheet1 có giá trị là 250 để tìm kiếm bên sheet2 theo đúng mặt hàng bottom(tìm kiếm giá trị là tương đối vì dữ liệu nó chênh lệch nhau)
Nếu E3 sheet1 là 250 mà bên sheet2 ở cột D5 là 255 thì vẫn lấy hiệu suất là 20% tại D3 sheet2 và 1 ngày sau đó trả về sheet1.

Nếu power ở sheet1 và không khớp với power ở sheet2 theo từng mặt hàng thì ưu tiên lấy theo giá trị gần nhất để trả được hiệu suất trung bình và số ngày cần để sản xuất
ví dụ power sheet1 là 250 mà power sheet2 là 255 thì lấy theo 255
từ đó suy ra hiệu suất là 20% và 1 ngày sản xuất

Tóm lại là lấy sum Mhr(power) tại sheet1 để kiểm tra nó nằm sát nhất trong khoảng nào của sheet 2 để trả về hiệu suất và số ngày sản xuất.
Nếu >= 50 đơn vị thì trả về cột bên phải nếu < 50 thì trả về cột bên trái.
là tương tự cho các cột khác sheet 1 là từ tháng 1 đến tháng 12
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn chép công thức, rồi bổ sung thêm một số nữa, rồi không báo là số 'Power' có số lẻ quá nhiều lần nên công thức *10^4 không ăn thua, làm kết quả không chính xác. Do vậy, bắt buộc phải sử dụng ROUND để khống chế.

Bạn xem lại file
Chúc bạn ngày vui
Bác ơi em xin cầu cứu bác vụ này cũng đau đầu lắm. trong công thức của bác có thể sửa giúp em Total thay vì để AVERAGEIF thì tính như anh bên dưới được không
Total của từng buyer dòng màu xanh F5= Sum(E2*F2 + E3*F3 + E4*F4)/Sum(E2:E4) tương tự cho F15
còn dòng màu đen Grand Total F16 = SUM(E5*F5+E15*F15)/SUM(E5+E15)
Mong bác giúp em

Capture.PNG
 
Lần chỉnh sửa cuối:
Upvote 0
Bác ơi em xin cầu cứu bác vụ này cũng đau đầu lắm. trong công thức của bác có thể sửa giúp em Total thay vì để AVERAGEIF thì tính như anh bên dưới được không
Total của từng buyer dòng màu xanh F5= Sum(E2*F2 + E3*F3 + E4*F4)/Sum(E2:E4) tương tự cho F15
còn dòng màu đen Grand Total F16 = SUM(E5*F5+E15*F15)/SUM(E5+E15)
Mong bác giúp em

View attachment 182329
Thử thay AVERAGEIF() bằng --> IFERROR(SUMPRODUCT(F$1:F1,E$1:E1,N($A$1:$A1=$A1))/SUMIF($A$1:$A1,$A1,E$1:E1),0)
PHP:
F2=IF(COUNTIF($A2,$A1&" Total"),IFERROR(SUMPRODUCT(F$1:F1,E$1:E1,N($A$1:$A1=$A1))/SUMIF($A$1:$A1,$A1,E$1:E1),0),IFERROR(OFFSET(calculate!$C$1,MATCH($C2&F$1,INDEX(calculate!$B$2:$B$45&calculate!$C$2:$C$45,),0),G2)*(E2>0),0))
Enter, rồi fill xuống. Copy qua các cột tương ứng.

Riêng "Grand Total" bạn nên tính riêng vì là dòng cuối cùng, không nên thêm vào công thức thành: 3 trong 1 sẽ làm phức tạp thêm công thức.
PHP:
E1036=SUMIF($A$2:$A$1035,"*Total",$E$2:$E$1035)
F1036=IFERROR(SUMPRODUCT(F$2:$F$1035,E$2:$E$1035,ISNUMBER(FIND("Total",$A$2:$A$1035))*1)/$E$1036,0)

Chúc bạn ngày vui.
 
Upvote 0
Thử thay AVERAGEIF() bằng --> IFERROR(SUMPRODUCT(F$1:F1,E$1:E1,N($A$1:$A1=$A1))/SUMIF($A$1:$A1,$A1,E$1:E1),0)
PHP:
F2=IF(COUNTIF($A2,$A1&" Total"),IFERROR(SUMPRODUCT(F$1:F1,E$1:E1,N($A$1:$A1=$A1))/SUMIF($A$1:$A1,$A1,E$1:E1),0),IFERROR(OFFSET(calculate!$C$1,MATCH($C2&F$1,INDEX(calculate!$B$2:$B$45&calculate!$C$2:$C$45,),0),G2)*(E2>0),0))
Enter, rồi fill xuống. Copy qua các cột tương ứng.

Riêng "Grand Total" bạn nên tính riêng vì là dòng cuối cùng, không nên thêm vào công thức thành: 3 trong 1 sẽ làm phức tạp thêm công thức.
PHP:
E1036=SUMIF($A$2:$A$1035,"*Total",$E$2:$E$1035)
F1036=IFERROR(SUMPRODUCT(F$2:$F$1035,E$2:$E$1035,ISNUMBER(FIND("Total",$A$2:$A$1035))*1)/$E$1036,0)

Chúc bạn ngày vui.
Em đã thay vào nhưng tất cả dòng màu xanh mà em đã trình bày lần trước nó đều là 0%. em đang thử nghiệm ở cột F
vì file này nó bắt buộc phải để ở dạng table cho nên nếu Grand Total mà viết riêng một công thức thì tất cả các dòng còn lại nó sẽ theo công thức của Grand Total chứ nó không
độc lập được bác ạ. hôm qua em có ngồi nghiên cứu công thức của bác để sửa xem có được không nhưng vốn dĩ em chưa hiểu lắm nên không sửa được.
em gửi lại bác hỗ trợ em với.
 

File đính kèm

Upvote 0
Em đã thay vào nhưng tất cả dòng màu xanh mà em đã trình bày lần trước nó đều là 0%. em đang thử nghiệm ở cột F
vì file này nó bắt buộc phải để ở dạng table cho nên nếu Grand Total mà viết riêng một công thức thì tất cả các dòng còn lại nó sẽ theo công thức của Grand Total chứ nó không
độc lập được bác ạ. hôm qua em có ngồi nghiên cứu công thức của bác để sửa xem có được không nhưng vốn dĩ em chưa hiểu lắm nên không sửa được.
em gửi lại bác hỗ trợ em với.
  • Do các cột: Q'ty, MHR.. bạn phải định dạng 'Số' (Number) cho các cột dữ liệu là số, bạn để dữ liệu dạng text nên nó coi như số 0 nên tính toán kết quả = 0.
  • Về dòng cuối cùng "Grand Total" đâu nhất thiết nó nằm trong 'Table', bạn làm dòng riêng ra là được thôi.
Bạn xem file đính kèm.

Chúc bạn ngày vui.
 

File đính kèm

Upvote 0
  • Do các cột: Q'ty, MHR.. bạn phải định dạng 'Số' (Number) cho các cột dữ liệu là số, bạn để dữ liệu dạng text nên nó coi như số 0 nên tính toán kết quả = 0.
  • Về dòng cuối cùng "Grand Total" đâu nhất thiết nó nằm trong 'Table', bạn làm dòng riêng ra là được thôi.
Bạn xem file đính kèm.

Chúc bạn ngày vui.
Grand Total thì ok rồi bác ạ nhưng còn cái định dạng text và number
Nó không dừng lại ở mức đấy bác ạ chính vì nó ở dạng table dữ liệu sẽ luôn được cập nhật liên tục từ hệ thống bằng cách chạy query vì vậy mà định dạng nó không giữ được như ban đầu nữa. vừa rồi em định chuyển đổi công thức của bác bằng cách dùng hàm value nhưng chẳng biết đặt value vào chỗ nào nữa. bác xem giúp em với.
 
Upvote 0
Grand Total thì ok rồi bác ạ nhưng còn cái định dạng text và number
Nó không dừng lại ở mức đấy bác ạ chính vì nó ở dạng table dữ liệu sẽ luôn được cập nhật liên tục từ hệ thống bằng cách chạy query vì vậy mà định dạng nó không giữ được như ban đầu nữa. vừa rồi em định chuyển đổi công thức của bác bằng cách dùng hàm value nhưng chẳng biết đặt value vào chỗ nào nữa. bác xem giúp em với.
Bạn xem file đính kèm.

Lưu ý: công thức cột F và Grand Total là công thức mảng, kết thúc lệnh phải nhấn Ctrl+Shift+Enter

Chúc bạn ngày vui
 

File đính kèm

Upvote 0
Bạn xem file đính kèm.

Lưu ý: công thức cột F và Grand Total là công thức mảng, kết thúc lệnh phải nhấn Ctrl+Shift+Enter

Chúc bạn ngày vui
Nó chạy ổn rồi bác. em cám ơn rất nhiều em sẽ học được rất nhiều từ công thức của bác
 
Upvote 0
Thấy Code của bạn hiền hiệu quả "Ba trong một" nút nhấn, ngưỡng mộ và cũng tò mò :), nên muốn góp vui bằng giải pháp công thức (và cũng nếu chủ thớt có nhã hứng tham khảo).
PHP:
F3=IF(COUNTIF($A3,$A2&" Total"),SUMIF(A$2:$A2,$A2,F$2:F2),IFERROR(OFFSET(Data!$C$1,MATCH($C3&F$2,INDEX(Data!$B$2:$B$45&Data!$C$2:$C$45,),0),G3)*(E3>0),0))
G3=IF(COUNTIF($A3,$A2&" Total"),SUMIF($A$2:$A2,$A2,G$2:G2),MOD(AGGREGATE(15,6,ABS(E3-OFFSET(Data!$D$1:$AH$1,MATCH($C3&E$2,Data!$B$2:$B$45&Data!$C$2:$C$45,0),))*10^4+COLUMN($A:$AE),1),10^4)*(E3>0))
Enter fill xuống. Xong copy dán qua các cột tương ứng.

Chúc bạn hiền ngày mới thiệt vui và năng động.
/-*+//-*+//-*+/
Hay quá anh ơi. Công thức tuyệt vời. Cảm ơn anh
 
Upvote 0
Web KT

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

Back
Top Bottom