Xin giúp đỡ trong việc tách chuỗi ký tự với hàm MID

karado90

Thành viên mới
Tham gia ngày
10 Tháng năm 2011
Bài viết
3
Được thích
0
Điểm
363
Tuổi
30
Kính gửi các anh chị em cao nhân trong forums hiện tại em đang phải tách 1 dãy số gồm 9 ký tự (bắt đầu bằng 011, 012, 013, 014, 015 ) từ 1 chuỗi dài và không có quy tắc. Em đã dùng công thức với =MID(ô chứa dữ liệu, FIND(''01'',ô chứa dữ liệu),9). Tuy nhiên bất cập xảy ra là trong chuỗi đó sẽ có nhiều dữ liệu trùng điều kiện dẫn đến kết quả không như mong muốn, mọi người có thể giúp em xử lý vấn đề này được không ạ?
 

File đính kèm

batman1

Thành viên gạo cội
Tham gia ngày
8 Tháng chín 2014
Bài viết
3,562
Được thích
5,445
Điểm
560
Nếu số cần lấy không "dính" vào text phía trước, tức trước số luôn có ít nhất 1 dấu cách thì
Mã:
=MID(A2, FIND(" 01",A2)+1,9)
 

karado90

Thành viên mới
Tham gia ngày
10 Tháng năm 2011
Bài viết
3
Được thích
0
Điểm
363
Tuổi
30
Nếu số cần lấy không "dính" vào text phía trước, tức trước số luôn có ít nhất 1 dấu cách thì
Mã:
=MID(A2, FIND(" 01",A2)+1,9)
Em cảm ơn rất nhiều! Trường hợp của em lại bị dính các ký tự ở trước như mhs:01 hoặc _01 ạ.
 

karado90

Thành viên mới
Tham gia ngày
10 Tháng năm 2011
Bài viết
3
Được thích
0
Điểm
363
Tuổi
30
Bài này dùng công thức rất khó, đây là bài tập hay công việc?

Nếu là công việc, hãy dùng hàm tự tạo.
Đây là trong công việc ạ, mà nó có tình chất thường xuyên em định làm code VBA nhưng mông lung chưa biết phải làm thế nào nên muốn có thêm tham khảo và tư vấn của các anh chị có kinh nghiệm.
 

HieuCD

Chuyên gia GPE
Tham gia ngày
14 Tháng chín 2010
Bài viết
7,219
Được thích
14,232
Điểm
1,860
Kính gửi các anh chị em cao nhân trong forums hiện tại em đang phải tách 1 dãy số gồm 9 ký tự (bắt đầu bằng 011, 012, 013, 014, 015 ) từ 1 chuỗi dài và không có quy tắc. Em đã dùng công thức với =MID(ô chứa dữ liệu, FIND(''01'',ô chứa dữ liệu),9). Tuy nhiên bất cập xảy ra là trong chuỗi đó sẽ có nhiều dữ liệu trùng điều kiện dẫn đến kết quả không như mong muốn, mọi người có thể giúp em xử lý vấn đề này được không ạ?
Nếu dính ký tự đặt biệt phía trước thì thêm hàm SUBSTITUTE
Mã:
=MID(A2, FIND(" 01",SUBSTITUTE(SUBSTITUTE(A2,"_"," "),":"," "))+1,9)
 

phuocam

Thành viên mới
Tham gia ngày
16 Tháng năm 2013
Bài viết
2,799
Được thích
3,903
Điểm
560
Đây là trong công việc ạ, mà nó có tình chất thường xuyên
Bạn dùng công thức mảng sau:

PHP:
=MID(A2,MATCH(1,ISERR(--MID(SUBSTITUTE("@"&A2," ","@"),ROW(INDIRECT("1:"&LEN(A2)-9)),1))
*ISNUMBER(--MID(SUBSTITUTE(A2," ","@"),ROW(INDIRECT("1:"&LEN(A2)-8)),9))
*(MID(SUBSTITUTE(A2," ","@"),ROW(INDIRECT("1:"&LEN(A2)-8)),2)="01")
*ISERR(--MID(SUBSTITUTE(A2&"@"," ","@"),ROW(INDIRECT("10:"&LEN(A2)+1)),1)),0),9)
Hoặc dùng UDF :

PHP:
Public Function ExtractID(ByVal txt As String) As String
Dim i As Long
txt = "|" & txt & "|"
For i = 1 To Len(txt) - 10
    If Mid(txt, i, 11) Like "[!0-9]01#######[!0-9]" Then
        ExtractID = Mid(txt, i + 1, 9)
        Exit For
    End If
Next i
End Function
 

File đính kèm

Top Bottom