- Cháu nghĩ: Vùng cháu chọn cháu biết chắc là có sKye_1, sKey_2 tồn tại. Khi cháu đưa If-End If vào thì nó sẽ lọc theo điều kiên a,b,c để có tập Key. Khi có tập Key cháu dán xuống Sheet
- tạo 1 Key và tìm Item của nó các bài trước cũng hòm hòm rồi ạ
- Giờ tạo hai Key và lấy tập Key thì chưa biết ạ? Không biết bài #30 có làm như cháu nghĩ được không chú? Hay buộc phải có biện pháp khác ạ?
Chán quá đi à.
- Câu lệnh là LastRw = ... CountA chứ có phải j = CountA đâu?
- Câu lệnh là
sKey_1 = ...
Dict.Add sKey_2, i
chứ có phải sKey_2 đâu mà gán sKey_2?
- item của cả 2 loại màu là i, là STT dòng của range dữ liệu có xài được cho Bảng 2 đâu? chả lẽ bảng 2 rời rạc?
- đã tính a, b, c rồi mà 2 cái sKey lại phải tính lại lần nữa?
Tất cả các câu hỏi trên nhằm mục đích mắng cho cái chuyện copy code của người khác từng câu từng câu về mà không biết nó ra kết quả gì, thậm chí copy dòng trên xuống dòng dưới mà sửa không rốt ráo.
Phướng pháp là các bước thế này:
1. Tự suy nghĩ về thuật toán (cái gọi là ní nuận ấy)
2. Ghi ra giấy, nghĩ lại lần nữa, sắp xếp lại nếu cần
3. Tự viết câu lệnh dựa vào ní nuận đã ghi trên giấy, không copy từng dòng lệnh của người khác, trừ khi biết chính xác là câu lệnh copy đó phù hợp với ní nuận
4. Viết xong chạy thử từng dòng lệnh: Nhấn F8 để chạy từng câu lệnh.
- Sau mỗi câu lệnh, rà chuột vào các biến để xem giá trị tức thời của biến (chỉ xem được biến đơn, không xem được biến mảng hoặc giá trị mảng, giá trị range nhiều ô).
- Đối chiếu với giá trị mong muốn
- Nếu code có cấu trúc If, thì xem lệnh chạy đến điều kiện của If rồi chạy thẳng đến else, hay chạy các dòng lệnh của if? Việc này đúng hay sai so với mong muốn?
- Nếu có vòng lặp, thì xét ít nhất 3 vòng lặp xem các câu lệnh có chạy đúng ý muốn chưa
Đối với bài này:
- xác định ý muốn là gì: Liệt kê riêng 3 màu giống nhau và 2 màu cuối giống nhau, hay liệt kê riêng 2 bảng. Liệt kê chung thì mới bỏ chung vào 1 Dict
- Xác định là mỗi bộ màu thoả điều kiện chỉ liệt kê 1 lần, hay liệt kê hết? (thí dụ có 3 dòng đều có 3 ô màu đỏ thì liệt kê 1 lần hay 3 lần). Nếu chỉ liệt kê 1 lần mới xài Dict
- đặt 3 biến a, b, c để lấy 3 già trị màu, ok. Vậy thì các sKey nối a, b, c chứ mắc gì nối lại 3 lần tìm giá trị màu? Cái này rõ ràng là làm biếng viết, nghĩ rồi mà không viết, lại đi copy. Rồi rõ ràng mu61n add sKey_2, mà lại copy câu lệnh của sKey_1 xuống, không sửa 1 thành 2!
- Vòng lặp i chạy qua vùng dữ liệu, vậy i có xài được cho bảng kết quả không? Nếu không thì gán item là i làm cái quái gì.
- Kết quả là cần màu, chứ có cần key hay item đâu mà transpose? Phải dùng kết quả a, b, c là giá trị màu, gán màu vào bảng 2.
- Nếu gán màu xuống bảng 2 thì phải có biến dòng cho bảng 2, mỗi lần ghi màu là tăng lên 1, chứ không là ghi đè vào dòng cũ.
Mắng cũng bắt mệt rồi đa!