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

Liên hệ QC

karado90

Thành viên mới
Tham gia
10/5/11
Bài viết
3
Được thích
0
Nghề nghiệp
sinh viên
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

  • FILE LOC SO.xlsx
    10.4 KB · Đọc: 12
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)
 
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 ạ.
 
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.
 
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)
 
Đâ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

  • Tach_ID.xlsm
    17.6 KB · Đọc: 11
Web KT
Back
Top Bottom