Sử dụng Power query, tách cái cột A theo dấu "= =", sau đó tách tiếp cột gồm các số + nhau thành các cột nhỏ khác, chuyển định dạng các cột sau tách thành số=> rồi cộng các cột lại là được. Có thể tạo một hàm, duyệt tất cả các bước, giới hạn tham số bao nhiêu cột con thực hiện là ra kết quả thôi. Bạn hỏi vậy nên tôi trả lời du lịch qua màn ảnh nhỏ vậy.
Cỡ tầm không phân biệt nối chuỗi và biểu thức thì cách này quá tầm tay.
Căn bản Excel là bảng tính trải rộng. Không hiểu tại sao bà con GPE cứ coi như nó là công cụ phân tích chuỗi như lisp (Unix).
Excel có hàm Evaluate tính được biểu thức ở dạng chuỗi. Vì Evaluate nằm bên trong Macro 4.0 cho nên có những điều kiện sau:
1. Không thể sử dụng trực tiếp trên bảng tính, mà phải gọi qua một name.
2. Vì là macro cho nên file phải được saved lại ở dạng xlsm.
3. Vì sử dụng trên bảng tính Excel cho nên biểu thức:
3.1 nếu ở dạng chuỗi thì phải tuân theo luật ngữ pháp bảng tính Excel.
3.2 nếu ở dạng code thì phải tuân theo luật ngữ pháp VBA.
Ví dụ:
Evaluate("And(1,3)") : Evaluate(1 And 3)
Dạng thứ nhất gọi hàm And của bảng tính. Dạng thứ hai dùng code VBA.
Lưu ý: hai lệnh trên cho ra hai kết quả khác nhau. Lệnh thứ nhất cho ra True vì bảng tính xét cả 1 lẫn 3 đều khác 0. Lệnh thứ hai cho ra 1 vì toán tử And (của VBA) xét thấy 1 và 3 cùng có bit 1.
Lưu ý 2: Evaluate ("1 And 3") sẽ cho ra error vì như tôi đã nói trên, chuỗi phải theo ngữ pháp bảng tính.
Bài này cách giải dễ nhất là đặt một hàm Eval
Function Eval(s As String)
Eval = Evaluate(s)
End Function