Cám ơn MrBab,
Code của bạn áp dụng thủ thụât rất hay, để mình giải thích xem đúng không nha:
- áp dụng 2 vòng lặp for lồng nhau
- khi đạt 1 mục tiêu cụ thể, chặn đứng vòng lặp ngoài, chạy vòng lặp trong.
- Khi đạt mục tiêu của vòng lặp trong, đi thẳng ra ngoài 2 cả vòng lặp.
Mục đích là sử dụng giá trị 2 biến i và i1 của 2 vòng lặp (tại thời điểm bị dừng) cho việc tính kết quả.
Ngâm cứu nửa tiếng mới hiểu lờ mờ thủ thuật này đấy.
--> Số và đơn vị tính. Số và đơn vị tính cách nhau 1 khoảng trắng để phục vụ cho việc bóc tách sau này.
Bóc tách ra chưa chắc có thể tính toán được: Giả sử số thập phân trong Excel quy định là phẩy, mà chuỗi tách ra có dấu chấm.
Còn hàm của mình dài hơn do mình có chủ định khác:
- Tách từng chuỗi số ra khỏi 1 chuỗi phức tạp gồm từ 2 nhóm số trở lên, có cả dấu thập phân cả 2 kiểu phẩy và chấm, kèm cả dấu trừ nếu âm.
- tách không kèm đơn vị tính nhằm mục đích tính toán cho các kết quả.
- ở bài trước mình tách được 2 chuỗi số, nay mình thực hiện được với chuỗi bất kỳ với bao nhiêu nhóm số cũng được.
- thủ thuật là đệ quy, 1 lần hoặc nhiều lần.
Mình đã làm 1 hàm duy nhất, tách chuỗi phức tạp thành nhiều nhóm số.
Trong file kèm theo mình thử với chuỗi gồm 5 nhóm số như chuỗi:
"400mlX24bottle And450mlX20bottle And2100mlDeGoDen"
kết quả là: 400 | 24 | 450 | 20 | 2100
Nhưng hiện giờ
mới đúng cho số nguyên âm và dương, chưa đúng cho số thập phân. Nhờ MrOkeBab và các cao thủ góp ý xem sai chỗ nào.
Còn câu hỏi bài trước mình ngẫm thấy val("5ML") = 5 nhưng len(str(val("5ML"))) = 2 là không biết tại sao có phải quy luật không, muốn cho chắc thì len(trim(str(val("5ML")))) sẽ bằng 1.