Nhờ lập công thức giúp ?

Liên hệ QC
Son2006 đã viết:
de viet VBA can thong nhat lai cach mark khi con so lon qua. VD co 4 so lien tiep bat dau tu 100 nhu sau:100-20-210-40, ta se mark ntn?
Co 1 so kha nang nhu sau
1. So 210 ban se phan lam 100-100-20; Nhu vay se mark M-0-M-...
2. So 20 gan 100 hon 210 nen se mark
M-M-M-...
3. Do so 210 qua lon nen khi phan thanh 100-100-20 thi con ton lai sau khi phan 2*100 la 10; So 10 con ton do se tinh nhu bat dau sum moi, vao cong lai vao tong tiep theo, VD nhu 10+40=50 de tinh tiep xem mark ntn?
4. Do da mark o so 210 nen tong sau cu tinh tiep theo, tuc la bat dau tu so 40?
Ban loai bo bot nhung truong hop sai theo y ban de co the viet code.
Ve mat hinh thuc trinh bay co 2 cach viet code:
1. Sau khi ban input du lieu, se bam nut lenh dieu khien nao do de Mark. Neu du lieu cua ban nhieu thi nen theo cach nay
2.Viet function de tinh tu dong, sau moi thay doi cua du lieu, excel se tu tinh lai. Neu du lieu cua ban nhieu, hoac ca file da kha lon roi thi cach lam nay se lam chuong trinh chay cham dang ke
Như tôi đã nói vì là bài toán định vị nên độ chính xác càng cao càng tốt, như vậy có nghĩa là trong trường hợp bạn nêu: 100-20-210-40 sẽ phải triển khai lại thành: 100-20-80-100-40-40- sau đó mark là M-0-M-M-0-?-

Nếu làm bằng tay bọn tôi phải tự kiểm tra nhanh như sau =COUNTA(cột Mark) nếu thấy = SUM( cột dữ liệu)/100 là được. Cái này sẽ quyết định một phần việc có Mark cả ở 20 và 210 hay không ? và ô cuối cùng có mark hay không , cách này không hoàn thiện gây sai số lớn nhưng nếu vội thì tôi vẫn ứng dụng tạm trong thực tế bạn ạ:=\+ Như vậy nếu làm bằng tay và lười ko chịu phân bố lại, tôi sẽ mark là: M-M-M- nói như vậy chắc bạn hiểu.

Còn về hình thức trình bầy thì tôi cũng chưa biết thế nào hơn, dữ liệu của tôi trên 1 sheet thì cũng rất nhiều nên có lẽ dùng cách 1)
 
Lần chỉnh sửa cuối:
'Như tôi đã nói vì là bài toán định vị nên độ chính xác càng cao càng tốt, như vậy có nghĩa là trong trường hợp bạn nêu: 100-20-210-40 sẽ phải triển khai lại thành: 100-20-80-100-40-40- sau đó mark là M-0-M-M-0-?-"
Có nghĩa là mình phải thêm 1 cột để triển khai lại, sau đó mới mark ở cột khác? Và sẽ chỉ phải triển khai lại khi tồn tại 1 input >=200?
 
Cột C là cột nhập liệu, chạy VBA sẽ sinh ra dữ liệu mới đè vào luôn dữ liệu ở cột C và chắc chắn số liệu triển khai sẽ dài hơn số liệu gốc, tôi có thể kiểm sóat điều này. Còn cột B thì chỉ là công thức thì rõ rồi đúng ko ạ.
Hoặc tiện nhất là sinh dữ liệu ra 1 cột C ở Sheet mới khác sau đó tôi sẽ copy vào đè lại sau.

Công thức bạn lập khá ổn, thực tế thì trong cột Mark thỉnh thoảng tôi phải đánh dấu 1 số vị trí đặc biệt (ví dụ được đánh là "G") điều này sẽ phá vỡ công thức của bạn lập, nên có lẽ sẽ phải sửa lại 1 chút.

Có tình huống thực tế như sau: số liệu nhập vào là 100-20-180,1-100 ....
sẽ triển khai lại là 100-20-80,1-100... nhưng nếu lập trình thì chắc vẫn là 100-20-80-0,1-100 ... cũng hơi buồn cười đúng ko --=0 Cài này nó liên quan đến số có nghĩa đã thảo luận ở trên, vì giữa 0,1 và tiêu chuẩn 100 chênh nhau quá lớn, gần giống như 0,000000000000000000001 máy tính coi là số 0 ấy.
 
Lần chỉnh sửa cuối:
Son2006 đã viết:
Và sẽ chỉ phải triển khai lại khi tồn tại 1 input >=200?
Triển khai để tiêu hết số M được cấp (theo cách sum mình nói ở trên) và để Mark đạt độ chính xác tuyệt đối
 
Lần chỉnh sửa cuối:
"Công thức bạn lập khá ổn, thực tế thì trong cột Mark thỉnh thoảng tôi phải đánh dấu 1 số vị trí đặc biệt (ví dụ được đánh là "G") điều này sẽ phá vỡ công thức của bạn lập, nên có lẽ sẽ phải sửa lại 1 chút."
Nếu lập công thức mark bằng VBA thì điều này không ảnh hường gì; Còn lập công thức thẳng trong excel thì khá phiền hà tuy rằng có thể lập được. Như tôi đã trình bày, cột D vừa là cột kết quả, vừa chứa dữ liệu để tính toán. Đương nhiên ký hiệu G mà bạn thêm không thể trùng với M được; Như vậy là những chữ G đó lại chiếm mất 1 số ô dữ liệu. Mà đã là 6 dữ liệu thì có thể tính lại được dưa trên ô phía trên nó. Phát sinh ra trường hợp: Nếu ô phía trên nó lại cũng là G thì sao? Như vậy nên hạn chế: Chữ G không đựoc đánh dấu liên tiếp. Như vậy thì may ra sẽ lập được công thức trực tiếp trong excel. Còn không thì tốt nhất là dùng VBA
 
Son2006 đã viết:
"Công thức bạn lập khá ổn, thực tế thì trong cột Mark thỉnh thoảng tôi phải đánh dấu 1 số vị trí đặc biệt (ví dụ được đánh là "G") điều này sẽ phá vỡ công thức của bạn lập, nên có lẽ sẽ phải sửa lại 1 chút."
Nếu lập công thức mark bằng VBA thì điều này không ảnh hường gì; Còn lập công thức thẳng trong excel thì khá phiền hà tuy rằng có thể lập được. Như tôi đã trình bày, cột D vừa là cột kết quả, vừa chứa dữ liệu để tính toán. Đương nhiên ký hiệu G mà bạn thêm không thể trùng với M được; Như vậy là những chữ G đó lại chiếm mất 1 số ô dữ liệu. Mà đã là 6 dữ liệu thì có thể tính lại được dưa trên ô phía trên nó. Phát sinh ra trường hợp: Nếu ô phía trên nó lại cũng là G thì sao? Như vậy nên hạn chế: Chữ G không đựoc đánh dấu liên tiếp. Như vậy thì may ra sẽ lập được công thức trực tiếp trong excel. Còn không thì tốt nhất là dùng VBA
Ngay từ đầu tôi đã xác định rằng để giải quyết triệt để bài toán thì phải lập VBA, còn đấy là tôi cứ nêu thực tế bài toán của mình ra để bạn hiểu thêm công việc thực tế xảy ra các tình huống như thế. Trong thực tế: thì chữ G không bao giờ xảy ra đánh liên tiếp bạn ạ. Chỉ có điều có từ 1 đến tối đa là 3 loại G có thể xảy ra trong 1 đoạn (Ký hiệu là G1,G2,G3), và cũng ko bao giờ xảy ra các chữ Gi này đánh sát nhau.
Nếu lập công thức do ko triển khai được thêm ô nên thỉnh thoảng tôi cũng sẽ phải chèn thêm bằng tay "M" để tiêu hết số "M" sau 1 khoảng cách nhất định
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom