TÁCH SỐ TRƯỚC CÁC KÝ TỰ

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

sonkims

Thành viên mới
Tham gia
5/11/15
Bài viết
7
Được thích
1
Chào anh chị,
Hiện tại em có một vấn đề trong việc tách số trước các ký tự, nhờ anh chị chị chỉ giáo giúp em.
Em chân thành cảm ơn!

Ví dụ:
(W)130x(L)270x(H)75x(G)75
Em cần lấy các số trong dãy trên ra riêng lẽ
130
270
75
75
 
Ví dụ:
(W)130x(L)270x(H)75x(G)75
Em cần lấy các số trong dãy trên ra riêng lẽ
130
270
75
75
Không viết toàn bộ chữ in hoa trong tiêu đề. (Phi phạm quy định của diễn đàn).
Không nên dùng từ "chỉ giáo".
Cho thêm vài ví dụ đi bạn, xem các ví dụ khác có cùng định dạng hay khác nhau. Sau khi sửa lại tiêu đề khả năng sẽ được hỗ trợ.
 
Lần chỉnh sửa cuối:
Bài này lâu rồi. Thớt chắc tìm giải pháp nơi khác. Tôi chỉ cách làm cho bạn nào chưa tìm ra.
Dùng công thức thì sẽ được công thức rất khủng. Vì vậy tôi làm vài thao tác trước.

Copy ô đầu và paste nó sang ô bên cạnh.
Dùng text to column tách chúng ra theo "x"
Loại bỏ 3 ký tự đầu, "(W)",...

Muốn dùng công thức thì dùng "các phương pháp tách họ và tên", xong loại bỏ 3 ký tự đầu
 
Dùng công thức thì sẽ được công thức rất khủng.
Nếu cấu trúc dữ liệu đúng như thế thì không quá khủng đâu bạn
- Công thức cho 365 hoặc 2021
D1=RIGHT(TEXTSPLIT(B1,"x"),LEN(TEXTSPLIT(B1,"x"))-FIND(")",TEXTSPLIT(B1,"x")))
- Công thức cho phiên bản thấp hơn
D3=RIGHT(FILTERXML("<a><b>"&SUBSTITUTE(B3,"x","</b><b>")&"</b></a>","//b"),LEN(FILTERXML("<a><b>"&SUBSTITUTE(B3,"x","</b><b>")&"</b></a>","//b"))-FIND(")",FILTERXML("<a><b>"&SUBSTITUTE(B3,"x","</b><b>")&"</b></a>","//b")))1.png
 
Nếu cấu trúc dữ liệu đúng như thế thì không quá khủng đâu bạn
- Công thức cho 365 hoặc 2021
D1=RIGHT(TEXTSPLIT(B1,"x"),LEN(TEXTSPLIT(B1,"x"))-FIND(")",TEXTSPLIT(B1,"x")))
- Công thức cho phiên bản thấp hơn
D3=RIGHT(FILTERXML("<a><b>"&SUBSTITUTE(B3,"x","</b><b>")&"</b></a>","//b"),LEN(FILTERXML("<a><b>"&SUBSTITUTE(B3,"x","</b><b>")&"</b></a>","//b"))-FIND(")",FILTERXML("<a><b>"&SUBSTITUTE(B3,"x","</b><b>")&"</b></a>","//b")))
Công thức cỡ vậy tôi gọi là công thức khủng - người copy công thức này về sử dụng sẽ gặp khó khăn khi cần chứng minh/giải thích công thức.

- Công thức cho 365 và 2021 chưa sử dụng hàm Let, thiếu hiệu quả.
- FilterXML không phải là hàm dễ nhai.

Ký hiệu chiều luôn luôn là một ký tự. Như vậy loại nó ra chỉ cần lấy từ ký tự thứ tư (4). Không cần phải tìm ")".
Nếu nhất định phải tìm ")":
- công thức khủng: dùng hàm Mid(...,...,10) sẽ tiết kiệm được mọt con toán tính chuỗi
- 365 và 2021: dùng hàm Textafter gọn hơn và hiệu quả hơn.
 
Công thức cỡ vậy tôi gọi là công thức khủng - người copy công thức này về sử dụng sẽ gặp khó khăn khi cần chứng minh/giải thích công thức.
Cảm ơn bạn đã góp ý, đúng là các hàm 365 mình chưa vận dụng linh hoạt được. Theo gợi ý của bạn thì có thể sửa công thức 365 thành =LET(x,TEXTSPLIT(B1, "x"),y,LEN(x),kqua,RIGHT(x,y-3),kqua), nếu muốn đẹp hơn có thể dùng LAMBDA với Define Name, công thức như thế này theo mình không phải là khủng.
- FilterXML không phải là hàm dễ nhai.
Việc sử dụng hàm theo mình thì tùy từng người và công việc của họ, với mình hay dùng FilterXML để phục vụ công việc nên thấy cũng không đến nổi khó nhai, tất nhiên có thể bạn chủ Topic không quen
 
Lần chỉnh sửa cuối:
Cảm ơn bạn đã góp ý, đúng là các hàm 365 mình chưa vận dụng linh hoạt được. Theo gợi ý của bạn thì có thể sửa công thức 365 thành =LET(x,TEXTSPLIT(B1, "x"),y,LEN(x),kqua,RIGHT(x,y-3),kqua), nếu muốn đẹp hơn có thể dùng LAMBDA với Define Name, công thức như thế này theo mình không phải là khủng.
...
Sao biết dùng Lambda đẹp hơn?

=TEXTAFTER(TEXTSPLIT(A1,"x"), ")")
Hoặc:
=MID(TEXTSPLIT(A1,"x"),4,10)
 
Chào anh chị,
Hiện tại em có một vấn đề trong việc tách số trước các ký tự, nhờ anh chị chị chỉ giáo giúp em.
Em chân thành cảm ơn!

Ví dụ:
(W)130x(L)270x(H)75x(G)75
Em cần lấy các số trong dãy trên ra riêng lẽ
130
270
75
75
Thêm 1 trường hợp cho bạn tham khảo.
Theo ví dụ thì căn cứ để tách số ra khỏi chuỗi là dựa vào ký tự trong cặp dấu () như (L) và ký tự x. Do đó cần tìm vị trí các ký tự đó nằm ở đâu để xác định số cần lấy, nên mình chủ yếu dùng hàm MID và hàm FIND như sau:
130=MID(A1, FIND("(W)", A1) + 3, FIND("x", A1) - FIND("(W)", A1) - 3)

270=MID(A1, FIND("(L)", A1) + 3, FIND("x", A1, FIND("(L)", A1) + 3) - FIND("(L)", A1) - 3)

75=MID(A1, FIND("(H)", A1) + 3, FIND("x", A1, FIND("(H)", A1) + 3) - FIND("(H)", A1) - 3)

75=MID(A1, FIND("(G)", A1) + 3, LEN(A1) - FIND("(G)", A1) - 2)IMG_1762.png
 
Web KT

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

Back
Top Bottom