Cần giúp đỡ : Tại sao công thức mình tách từ 1 chuỗi text không tự tính nhỉ ?

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

qa1994

Thành viên mới
Tham gia
26/12/23
Bài viết
3
Được thích
0
1703608941909.png
Các bạn xem lỗi gì giúp mình hoặc có cách nào để ô B2 tính kết quả sau dấu = dc ko?
 

File đính kèm

  • thac mac.xlsx
    10.1 KB · Đọc: 14
B2 = T("sau dấu = dc ko?")
Theo mình hiểu thì ý tác giả là tại cột b2 thay vì hiện "=5+1" thì sẽ hiện là "6", hoặc "=6". Không hiểu ý tác giả là cột A tại sao là 2 dấu =, rồi dấu có mấy dấu +, hay có dấu nào khác không... tại dữ liệu cho chỉ có 1 dòng
 
Theo mình hiểu thì ý tác giả là tại cột b2 thay vì hiện "=5+1" thì sẽ hiện là "6", hoặc "=6". Không hiểu ý tác giả là cột A tại sao là 2 dấu =, rồi dấu có mấy dấu +, hay có dấu nào khác không... tại dữ liệu cho chỉ có 1 dòng
Theo mình hiểu thì ý tác giả là B2 sẽ có kết quả "sau dấu = dc ko?"
Công thức ở bài #2 cho ra kết quả ấy.
 
B2 = T("sau dấu = dc ko?")
Không dc luôn bạn, vẫn chỉ hiện công thức
Bài đã được tự động gộp:

Đúng chính xác là ô B2 mình muốn hiện là 6 ạ
Bài đã được tự động gộp:

Công thức ban đầu có 2 dấu =vì mình cần thêm 1 dấu= để tách giữa "phí vận chuyển" và "=5+1", mình nghĩ nếu ô sau tách xong sẽ là "=5+1" và excel sẽ tự động tính ra 6 như nhập tay
 
Lần chỉnh sửa cuối:
View attachment 297867
Các bạn xem lỗi gì giúp mình hoặc có cách nào để ô B2 tính kết quả sau dấu = dc ko?
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.
 
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
 
Cám ơn các bạn đã hỗ trợ nha, mình đã tìm được cách, giống như bạn VietMini đề cập.
Xin gửi file cho các bạn có cùng thắc mắc giống mình
1703784365926.png
 

File đính kèm

  • tinh sau dau =.xlsm
    19 KB · Đọc: 16
Thường tớ thấy người ta dùng dấu ":" chứ không "=". Nếu thêm mid thì có khi bỏ được cột 2 đấy.
Tại người ta muốn làm vậy chứ nếu là tôi, cột 2 dùng flash fill khỏe ru.

Nếu dùng hàm thì theo các bài ở "Các công thức tách họ tên...", Chuỗi dùng để tách là " ="

Nếu đã lỡ VBA rồi thì:
Function TinhKichThuoc(s As String)
TinhKichThuoc = Evaluate(Mid(s, InStrRev(s, "=") + 1))
End Function
 
Thường tớ thấy người ta dùng dấu ":" chứ không "=". Nếu thêm mid thì có khi bỏ được cột 2 đấy.
Cột 3 công thức gộp thì đã bỏ cột 2 rồi. Vả lại = hay : gì muốn bỏ là bỏ, muốn để là để, chả liên quan.
Cớ sao ai cũng dùng mid trong khi left Right gọn hơn hẳn nhỉ?

Tách =RIGHT(A3,LEN(A3)-FIND("=",A3,1))
Evaluate =eval(E3)

Gộp =eval(RIGHT(A3,LEN(A3)-FIND("=",A3,1)))

1703840082453.png
 
View attachment 297867
Các bạn xem lỗi gì giúp mình hoặc có cách nào để ô B2 tính kết quả sau dấu = dc ko?
................ Nhầm tí
Bài đã được tự động gộp:

Cám ơn các bạn đã hỗ trợ nha, mình đã tìm được cách, giống như bạn VietMini đề cập.
Xin gửi file cho các bạn có cùng thắc mắc giống mình
View attachment 297932
Bài này mình sẽ dùng Ctrl F để xử lý chắc sẽ nhanh hơn
 
Web KT
Back
Top Bottom